見に行けないサイトからのTrackBackなんてじゃまになることこそあれ、メリットなんて何も無いと思うのでMT側で制限を実装してみました。
MovableType Version 2.661 日本語化済 lib/MT/App/Trackback.pm の170行目辺りに次の青字の行を挿入これで、閲覧したときにステータスコードが200番台以外のサイト(つまり正常に閲覧出来ないサイト)からのTrackBackを拒否するようになります。if ($user_ip =~ /$banned_ip/ || $ENV{'REMOTE_HOST'} =~ /$banned_ip/) { return $app->_response(Error => $app->translate("You are not allowed to send TrackBack pings.")); } } ## Check if access to TrackBack sending site has been success. { my $ua = MT->new_ua; ## Wrap this in an eval in case some versions don't support it. eval { $ua->parse_head(0) }; my $req = HTTP::Request->new(GET => $url); my $res = $ua->request($req); my $rcode = $res->code(); unless( 200 <= $rcode && $rcode < 300){ return $app->_response(Error => $app->translate("TrackBack pings is permitted only from the site that everyone can access.")); } } ## Check if user has pinged recently #my @past = MT::TBPing->load({ tb_id => $tb_id, ip => $host_ip }); #if (@past) {
なお、これだと転送URL等も弾いてしまうので、BASIC認証からのTrackBackのみを弾きたい場合は
unless( 200 <= $rcode && $rcode < 300){を
if( 401 == $rcode){に変更してください。
なお、TrackBackの改変が成功したかどうかの確認はDrifting Antigone Frontlineさんのところにある手動トラックバック用のJavaScriptをハードディスクに保存(下記サイトに書いてある<html>から</html>までをメモ帳に貼り付けて保存)してそれをブラウザで開いてテストすると便利です。
私のところにも同様のPingが来るなと思っていたら、そんな理由だったのですね。それ以外にも何時の間にか無くなっているページもあったりして。ま、今のところ大した数ではありませんから手動で削除していますが、今後増えるようなことがあれば、こちらのハックの導入をさせていただきたく存じます。
Posted by: masato at 2004年03月02日 00:46