Sun 05/27, 2007

コメント/トラックバック・スパム対策 [Site info. and blog ]

コメント/トラックバック・スパム対策として日本語文字列を含まないものと、当サイトへの言及がないもの(トラックバック)を弾くという処理を入れているのだけど、この頃になってそれをすり抜けるものが増えてきた。そんな訳で更なる対策として「古い記事へのコメント/トラックバック禁止」処理を入れる。これは BanPing2OldEntry プラグインに倣ったもので、今時 MT2.6 の当サイトに MT3.2 用フィルタプラグインは使えそうにないので、手っ取り早く Comment.pm / TrackBack.pm にコードを組み込んでみた。

Comment.pm での例。

use MT::Util qw(offset_time_list);
        :
sub post {
        :
    require MT::Entry;
    my $entry = MT::Entry->load($entry_id)
        or return $app->error($app->translate(
            "Invalid entry ID '[_1]'.", scalar $q->param('entry_id')));
    # 2007.05 append by masato -- ここから
    my $days = 60; # とりあえず 60 日
    my @ago = offset_time_list(time - 3600 * 24 * $days, $entry->blog_id);
    my $ago = sprintf("%04d%02d%02d%02d%02d%02d", $ago[5]+1900, $ago[4]+1, @ago[3,2,1,0]);
    if ($ago > $entry->created_on) { 
        return $app->handle_error($app->translate("Comments are not allowed on old entries."));
    }
    # -- ここまで

この先は CAPTCHA のような画像を使った認証を採用しなければ厳しいかもしれない。

Posted by masato at 06:28 PM
このエントリーのトラックバックURL: http://bird.dip.jp/cgi-bin/mt/mt-tb.cgi/1364
コメントする

おそらく携帯電話等からは投稿できません。日本語文字列を含まないコメントやトラックバック、および当サイトへの言及を含まないトラックバックは御遠慮いただいております。また、90日以上経過した記事へのコメントはできません。










名前、アドレスを登録しますか?