BlogのSPAM攻撃をブロックするには

Blogを介してのSPAM攻撃が多いことは先日書いた。

具体的にはTrackback、及びコメントへ自動的にコメントを書き込むツールを用いることである。防ぐにはどうすればよいか?

*導入方法
上記サイトよりダウンロードしてきたプラグインをまず解凍。
次に各ファイルを以下のパスにアップロード。
(extlib以下にjayallenのディレクトリを作成し、.pmファイルを格納する。)


$MT_HOME/mt-blacklist.cgi
$MT_HOME/plugins/Blacklist.pl
$MT_HOME/extlib/jayallen/Blacklist.pm
$MT_HOME/extlib/jayallen/MTBlPing.pm
$MT_HOME/extlib/jayallen/MTBlPost.pm

しかし、このままではTrackbackが文字化けするので、以下の処置が必要。

  • MTBlPing.pm

・42行目以降を書き換え


my($title, $excerpt, $url, $blog_name) = map scalar $q->param($_),
qw( title excerpt url blog_name);

MT::App::Trackback::no_utf8($tb_id, $title, $excerpt, $url, $blog_name);
  ↓
my($title, $excerpt, $url, $blog_name, $icode) = map scalar $q->param($_),
qw( title excerpt url blog_name charset);

MT::App::Trackback::no_utf8($tb_id, $title, $excerpt, $url, $blog_name);
require Jcode;
my $charset = {'Shift_JIS'=>'sjis','ISO-2022-JP'=>'jis','EUC-JP'=>'euc',
'UTF-8'=>'utf8'}->{$app->{cfg}->PublishCharset} || 'utf8';
my $incoming = {'shift_jis'=>'sjis','iso-2022-jp'=>'jis','euc-jp'=>'euc',
'utf-8'=>'utf8'}->{lc($icode)} || Jcode::getcode($excerpt . $title . $blog_name);
$title = Jcode->new($title, $incoming)->$charset();
$excerpt = Jcode->new($excerpt, $incoming)->$charset();
$blog_name = Jcode->new($blog_name, $incoming)->$charset();

・108行目以降を書き換え


if (length($excerpt) > 255) {
$excerpt = substr($excerpt, 0, 252) . '...';
}
  ↓
if (length($excerpt) > 255) {
$excerpt = substr(Jcode->new($excerpt, $charset)->euc(), 0, 252);
if ($excerpt =~ /\x8F$/ or $excerpt =~ tr/\x8E\xA1-\xFE// % 2) {
chop $excerpt;
}
$excerpt = Jcode->new($excerpt . '...', 'euc')->$charset();
}

次にMT-Blacklistのサイトにて最新版のブラックリストを確認する。
リストはテキストエディタでコピーして任意のファイル名をつけて保存。

$MT_HOME/mt-blacklist.cgi にブラウザよりアクセス。上部にあるボタンから[Add]をクリックしてBlackList追加画面を表示。“Import blacklist:”のテキストボックス内に保存したファイル内の最新リストをコピー&ペースト。“Import entories”ボタンをクリックする。[Configure]ボタンをクリックして設定画面に入り、上部にある“MT-Blacklist Master Switch”で質問:(Would you like to activate MT-Blacklist?)で[Yes]にチェックを入れた後、画面下部の“Save Configuration”をクリックすればよい。