スパム検索から MovableType を守る

Posted by
ぴろり
Posted at
2006/06/22 20:06
Trackbacks
関連記事 (0)
Comments
コメント (1)
Post Comment
コメントできます
Category
MovableType カテゴリ

 先日、MovableType の管理画面からログを確認したところ、"online poker" や "play roulette online"、"free blackjack" などと云った検索クエリが 100 件近く記録されていました。MovableType の検索 CGI はデータベース上の記事を全走査するため、このような検索が頻繁に行われることはサーバ負荷を考えると不安ではあります。
 そこで、特定のリモートホストからのアクセスや、特定の単語を含む検索が行われた場合、データベースへのアクセスが行われる前に検索動作を停止するように改造してみました。これでスパムでお馴染の単語でログが埋め尽くされることもなくなります。

この記事を Delicious に追加する   このエントリーをはてなブックマークに追加  

ダウンロード

MTSearchAntiSpam  new

ver.1.00, '06/06/22, 0 bytes, MovableType
  • 初版公開
  • MovableType 3.151 で動作確認

 このプログラムは GPL ライセンス(GNU General Public License; GNU 一般公衆利用許諾契約書原文(英語)) の条件の下で自由に配布・使用することができます。

動作の概要

 MTSearchAntiSpam は MovableType 標準の検索機能が呼び出される前処理として実行されます。検索機能については何ら変更しません。

  1. リモートホストがブラックリストにあった場合、そこで検索処理を中断します
  2. 検索語句の何れかが NG ワードリストに一致した場合、そこで検索処理を中断します

 例えば、"casino" という NG ワードを検索しようとした場合、MovableType 標準の検索機能が呼び出される前に処理を中断し、エラー画面を表示するようになります。そのためログに気持ち悪い検索クエリが残りません。

動作概略図

導入方法

Step 1. 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 2-1. ブラックリスト(禁止 IP リスト)の作成

 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 2-2. NG ワードリストの作成

 Step 1.で NGWordsListPath に指定したパスに、以下のような形式のテキストファイルを作成します。一行につき NG ワードを一つずつ記述します。

baccarat
bingo
blackjack
casino
holdem
poker
roulette
slot
viagra

Step 3. 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 に置換します。エディタの機能を使えば一発ですね(・∀・)

いろいろ

  • ブラックリストはGOBLINと同じものがそのまま使えます
この記事を Delicious に追加する   このエントリーをはてなブックマークに追加  


この記事のアーカイブ

全ての記事 »
2006年
全てのカテゴリ »
MovableType
全てのタグ »
, ,

関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事にトラックバックを送るには?

寄せられたコメント (全 1 件中、最新 5 件まで表示しています)

Posted by
ぴろりぴろり
at
2006/08/22 18:39
ID
PhkJ9nkE
導入して暫く経ちますが,今のところ効果覿面のようです。
ロボットスクリプトによる検索クエリはほぼ皆無となり,本来のビジタによる検索語彙がログに残るようになりました。
ちなみに登録している NG ワードリストは↓こんな感じです。
http://www.magicvox.net/cgi-bin/admin/ngword.txt

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。