スパムとmod_rewrite Edit

mod_rewriteを使ってスパムを排除する。mod_rewriteの情報はネットに多いが,PukiWikiに応用するにはほんの少し注意点がある。

  • 参考までに,mod_rewrite一般で躓きやすいのは次の2点。
    1. FileInfoとOptionsをoverrideできること。(mod_rewrite - Apache HTTP Server
    2. Options +FollowSymLinks
      • 「ディレクトリ単位の設定ファイル における書き換えエンジンを有効にする場合、これらのファイルに RewriteEngine On をセットし、かつ Options FollowSymLinks を有効に しなければなりません。」(Apache module mod_rewrite

課題1 Edit

http://over.6pb.info/wiki/index.php?cmd=read&page=2rand[0,1,1]&refer=NET/ServersMan@VPS

を排除したい。

解決 Edit

httpd.confまたは.htaccess に

RewriteEngine On
RewriteCond %{QUERY_STRING} ^cmd=read&page=2rand\[0,1,1].*$
RewriteRule ^/wiki/index\.php$ /wiki/? [L,R=404]
  • URLの?以下(QUERY_STRING)をRewriteRuleで直接定義することはできない。上記のようにRewriteCond %{QUERY_STRING}を介して定義する。
  • 置換文字末尾の?は,QUERY_STRINGを捨てる意味。

課題2 Edit

特定のコメントスパムが世界中からやってくる。(面白いことに,この型の攻撃は日本国内からは1件もないようだ。)意外にも,404 (Not Found)を返すようにしたら(従前は403 Forbiddenを返していた。),徐々に来なくなり,1週間ほどでぴたりと止んだ。

解決 Edit

# パターン1 QUERY_STRINGにServersManがあり,HTTP_REFERERは空。
RewriteCond %{QUERY_STRING} ServersMan
RewriteCond %{HTTP_REFERER} =""
RewriteCond %{HTTP_USER_AGENT} "=Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
RewriteRule ^/wiki/index\.php$ /wiki/? [L,R=404]

# パターン2 QUERY_STRINGは空。HTTP_REFERERにServersManがある。(POST)
RewriteCond %{QUERY_STRING} =""
RewriteCond %{HTTP_REFERER} ServersMan
RewriteCond %{HTTP_USER_AGENT} "=Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
RewriteRule ^/wiki/index\.php$ /wiki/? [L,R=404]
  • このサーバーではページ「NET/ServersMan@VPS」が攻撃対象となっている。
  • このように正規表現によらない条件指定もできる(Apache module mod_rewrite参照。)。空白が含まれるので""で囲っている。

短縮URL Edit

PukiWikiのページの内,ページ名が日本語のページ(全角文字をページ名に含むページ)のURLを人に紹介するのは若干はばかられる。長い意味不明のURLを伝えることになるから(FFなどでは一見長くないように見えるが,メールにコピペすれば驚く。)。各種URL短縮サービスを利用するのも一計だが,デメリットもある。他のやり方として,自分のサーバーのリダイレクト機能を利用する方法がある。但し,若干の注意が必要。

例えば,ページ

NET/日経新聞電子版

へ,

http://over.6pb.info/nikkei-wiki

でアクセスできるようにするには,.haccess等にUTF-8で

RewriteRule ^/nikkei-wiki /wiki/index.php?NET/日経新聞電子版 [R]

と記述する必要がある。UTF-8で書くのがキモ。URLエンコードした

RewriteRule ^/nikkei-wiki /wiki/index.php?NET/%E6%97%A5%E7%B5%8C%E6%96%B0%E8%81%9E%E9%9B%BB%E5%AD%90%E7%89%88 [R]

では期待通りに動かない。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-11-23 (火) 12:56:36 (2433d)