コメント/トラックバック・スパム対策として日本語文字列を含まないものと、当サイトへの言及がないもの(トラックバック)を弾くという処理を入れているのだけど、この頃になってそれをすり抜けるものが増えてきた。そんな訳で更なる対策として「古い記事へのコメント/トラックバック禁止」処理を入れる。これは 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おそらく携帯電話等からは投稿できません。日本語文字列を含まないコメントやトラックバック、および当サイトへの言及を含まないトラックバックは御遠慮いただいております。また、90日以上経過した記事へのコメントはできません。