[PukiWikiPlus]ページ編集時にパスワードを要求する


http://pukiwiki.cafelounge.net/plus/でPukiWikiを改造したPukiWiki Plus!というものが提供されています。

PukiWiki Plus!ではユーザ認証として、Digest認証や外部認証APIの利用ができるらしいですが、
これらの認証を使用したくない/使用できない場合や、そこまで本格的な認証は欲しくないけど簡易的なbot対策を行いたい場合があります。

このような場合のために、PukiWiki Plus!に対してページ編集時にパスワードを要求するようなパッチを当ててみました。
下記の変更を行う事で、パスワードを入力しないとコンテンツを編集できないようになります。



1.lib\html.phpのedit_form関数を変更

関数内の$body変数に対して、以下のタグ(パスワード入力欄)を追加します。

<textarea name="msg" rows="$rows" cols="$cols">$s_postdata</textarea>
<br />




<textarea name="msg" rows="$rows" cols="$cols">$s_postdata</textarea>
<br />
password:<input type="password" name="edit_password" maxlength="10" value="" />
<br />






2.plugin\edit.inc.phpのplugin_edit_write()関数を変更

以下の記述を追加すると、パスワード欄に”pass”と入力しないとエラーにさせる事ができます。

$edit_passwd = isset($vars['edit_password'])     ? $vars['edit_password']     : '';
 
if ($edit_passwd != "pass" ) {
	$retvars = array();
	$retvars['msg'] = "auth error";
	$retvars['body'] = "please input password.";
	return $retvars;
}



上記の替わりに、以下の記述を行うとbot対策で、書き込みが成功したように見せかけて、実際はページが変更されていない状態にできます。

$edit_passwd = isset($vars['edit_password'])     ? $vars['edit_password']     : '';
 
if ($edit_passwd != "pass" ) {
	return plugin_edit_honeypot();
}

関連記事

コメントを残す

メールアドレスが公開されることはありません。