先日、MovableType の管理画面からログを確認したところ、"online poker" や "play roulette online"、"free blackjack" などと云った検索クエリが 100 件近く記録されていました。MovableType の検索 CGI はデータベース上の記事を全走査するため、このような検索が頻繁に行われることはサーバ負荷を考えると不安ではあります。
そこで、特定のリモートホストからのアクセスや、特定の単語を含む検索が行われた場合、データベースへのアクセスが行われる前に検索動作を停止するように改造してみました。これでスパムでお馴染の単語でログが埋め尽くされることもなくなります。
MTSearchAntiSpam
![]() ver.1.00, '06/06/22, 0 bytes, MovableType
|
このプログラムは GPL ライセンス(GNU General Public License; GNU 一般公衆利用許諾契約書原文(英語)) の条件の下で自由に配布・使用することができます。
MTSearchAntiSpam は MovableType 標準の検索機能が呼び出される前処理として実行されます。検索機能については何ら変更しません。
例えば、"casino" という NG ワードを検索しようとした場合、MovableType 標準の検索機能が呼び出される前に処理を中断し、エラー画面を表示するようになります。そのためログに気持ち悪い検索クエリが残りません。
SearchAntiSpam.pm
の導入ダウンロードしたアーカイブを展開し、エディタで開きます。ファイルの先頭付近に以下のような行があるので、環境に合わせてブラックリストファイルと NG ワードファイルへのパスを設定します。指定されたパスにファイルが見つからない場合、そのファイルは無視されますので、何れかの機能を使用しない場合はこのままでも構いません。
修正が終わったら、このファイルを (MTのインストールパス)/lib/MT/App
にコピーします。
元からある Search.pm
は削除しないでください。
;### Banned IP list my @IPBListPath = (); push @IPBListPath, '/home/magicvox/www/www/cgi-bin/mt/plugins/goblin/goblin.txt'; push @IPBListPath, '/home/magicvox/www/www/cgi-bin/admin/hoodlum.txt'; ;### NG Words list my @NGWordsListPath = (); push @NGWordsListPath, '/home/magicvox/www/www/cgi-bin/admin/ngword.txt';
Step 1.で IPBListPath
に指定したパスに、以下のような形式のテキストファイルを作成します。一行につき禁止したい IP アドレスを一つずつ記述します。
59.1.53.37 61.213.147.171 61.220.232.67 68.12.241.250 59.5.6.168 205.213.111.54 221.19.96.71
Step 1.で NGWordsListPath
に指定したパスに、以下のような形式のテキストファイルを作成します。一行につき NG ワードを一つずつ記述します。
baccarat bingo blackjack casino holdem poker roulette slot viagra
mt-search.cgi
の修正
MovableType の検索 CGI が SearchAntiSpam.pm
を使うよう修正します。MT のインストールパスにある mt-search.cgi
をエディタで開き、以下のように修正します。
■ 修正前 require MT::App::Search; my $app = MT::App::Search->new( Config => $MT_DIR . 'mt.cfg' ) or die MT::App::Search->errstr; ■ 修正後 require MT::App::SearchAntiSpam; my $app = MT::App::SearchAntiSpam->new( Config => $MT_DIR . 'mt.cfg' ) or die MT::App::SearchAntiSpam->errstr;
全ての MT::App::Search
という文字列をMT::App::SearchAntiSpam
に置換します。エディタの機能を使えば一発ですね(・∀・)
寄せられたコメント (全 1 件中、最新 5 件まで表示しています)
ロボットスクリプトによる検索クエリはほぼ皆無となり,本来のビジタによる検索語彙がログに残るようになりました。
ちなみに登録している NG ワードリストは↓こんな感じです。
http://www.magicvox.net/cgi-bin/admin/ngword.txt