スパムフィルタ

PukiWiki Adv.ではPlus!で実装されている簡易スパムフィルタに加えて、美麻Wikiでシステム的に修正している点で配布されているspam_filter.php、PukioWikioのPostIdチェックを本体レベルでマージしています。

PukiWiki Adv.のアンチスパムの在り方として、Wikiにデーターが書き込まれる直前にチェックを行うという実装にしてあります。このため、プラグインにアンチスパムの処理を入れる必要がありません。裏を返すと、脆弱性の原因となるため特定のプラグインでアンチスパム動作を無効にするということは原則としてできません

編集しているページとは別のページを更新するタイプのプラグインでは、スパムフィルタが働いて正常に反映できない可能性がある点について留意してください。

実際の処理は、https://github.com/logue/pukiwiki_adv/tree/master/wiki-common/lib/PukiWiki/Spamを見てください。

実装済み
  • DNSBL(Plus!で実装済み。ただし、spam_filter.phpのコードをベースにフルスクラッチで書き直し。)
  • 英字のみで、HTMLリンクタグか、URL数が多い場合を抑止(Plus!で実装済み。)
  • Akismet(実装済み)
  • Captica(reCAPTCHA登録してなくても使用可能。GDがない場合アスキーアートになる。)
  • USER_AGENTが不明なのを抑止(1.0)
  • 特定のUSER_AGENTを抑止
未実装
  • 指定以外のフォーム名(メールなど)に入力がある場合に抑止
  • URLブラックリストで対処
  • URLのネームサーバーを引いてブラックリストで対処
却下
  • HTMLの添付ファイルの禁止(mime-typeをforce-downloadに変えれば済むため。勝手にmime-typeが変更されないようにするヘッダー出力済み)
  • 英字のみの時(ソースコードを入れるときやっかい。応用範囲が減るため)
  • URLがcommentなどにある場合。(adv.では特定のプラグインに限らず、Wikiデーターが修正される都度にチェックを働かせる実装であるため)
  • ブラウザの言語が中国のとき(多言語前提で作っているため。公式中国版もあるため)

(個人的には、IE6のような古いブラウザを弾くだけでも結構効果があるような気がするが・・・。)

参考リンク

スパムログについて

Bad-behavior以外のスパムログは、キャッシュディレクトリ内に保存されます。中には、リモートホスト、セッション情報、GETやPOSTなどのダンプが保存されています。

ファイル名内容
suspicious.log環境変数がおかしい。不正な入力。
honeypot.log簡易スパムフィルタにヒットした。(Plus!のものと同じ)
akismet.logAkismetのフィルタにかかった。
dnsbl.logDNSBLのフィルタにかかった。(spam_filter.phpと同等の動作)
challenged.log画像認証に失敗した。
postid.log多重投稿を試みた

また、blacklist.logでは、これらのホスト情報のみが保存されます。

コメント

Show recent 10 comments. Go to the comment page.