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(); } |
関連記事
コメントを残す