インターネットは以前のように安全な場所ではありません。古き良きものは崩れ去り、Wiki でも同様です。WikiSpam、いわば電子メールやブログのスパムと同じものが増えています。あなたがもし DokuWiki をイントラネットで使用している場合は全く問題ありません。しかし、もしインターネット上で使用する予定がある場合は、よく知られたスパムワードをブラックリストに載せたくなるかもしれません。
DokuWiki でブラックリストを使用するには、usewordblock オプションを有効にし、conf/wordblock.conf ファイルを編集してください。このファイルは Perl 互換の正規表現を含んでおり、保存されるページの内容がこれらのいずれかにマッチした場合は、ページの保存が拒否されます。
デフォルトで DokuWiki に添付されているリストには chongqed.org でメンテナンスされている正規表現が含まれています。ブラックリストをアップデートする場合は以下のコマンドを実行してください (このコマンドを cron に登録して日次実行するも良い考えです)。
$ wget http://blacklist.chongqed.org/ -O conf/wordblock.conf
もしブラックリストを使用しているにも関わらず Wiki にスパムが投稿されてしまった場合は、chongqed.org にスパマーの登録を行っていただけますと助かります。彼らの Wiki に報告することもできます。
もし IP アドレスで拒否する場合は、Apache の Deny ディレクティブを使用すべきです。
DokuWiki 自体のソースコードに変更を加えることになってしまいますが、以下に示すような変更を加えると、ブロックした攻撃を data/meta/wordblock.log ファイルに記録することができるようになります。このログファイルはブラックリストのデバッグに使用できます。
ファイル: inc/common.php
変更前:
if(preg_match('#('.join('|',$re).')#si',$text, $match=array())) { return true; }
変更後:
if(preg_match('#('.join('|',$re).')#si',$text, $match=array())) { preg_match('#('.join('|',$re).')#si',$text, $match); io_saveFile($conf['metadir'].'/wordblock.log', date($conf['dformat'])."\t".$match[0]."\t".$ID.$_SERVER['REMOTE_USER']."\t".$_SERVER['REMOTE_ADDR'].":".$_SERVER['SERVER_PORT']."\t".gethostbyaddr($_SERVER['REMOTE_ADDR'])."\t".$_SERVER['HTTP_USER_AGENT']."\n",true); return true; }