星の海でトーク: ブログへの、スパムコメント対策

« 舞−乙HiME 1巻 | メイン | エル・カザド »

2007年05月20日

ブログへの、スパムコメント対策

[更新情報など]

少し前から、このブログへのスパムコメントがやたら多くなってきて、閉口しておりました。

プログラムの修正には時間がかかりそうだったので、都度削除していたのですが…
(何をどう修正すればいいか不明だった)

さすがに、毎日50件近くも削除する日々を1ヶ月以上も過ごすと、「プログラム対応しないと、やってられない!
と思うようになり、対応することにしました。

というわけで、前回掲示板のスパム対策でもお世話になった【コンピュータ関連の備忘録】様の、このページを参考に、Movable Typeのプログラムを修正しました。
(今のところ、英文スパムコメントしか来ないので、その対応だけです)

で、結果…
おおっ! あんなにしょっちゅう来ていた英文スパムコメントが、まったく来なくなった!
メデタシメデタシでした。


<以下、修正内容詳細>

ブログ環境 :Movable Type 3.33-ja
修正ファイル:\lib\MT\App\Comments.pm
修正内容  :英文のみのコメントをエラーにする
修正箇所  :赤字の部分を追加
       注意)行の先頭にある半角SPACEが表示されない為、全角SPACEを埋めています
          COPYして使われる方は、全角SPACE半角SPACEに置き換えて下さい。

sub post {
    my $q = $app->{query};

    return $app->error($app->translate("Invalid request"))
        if $app->request_method() ne 'POST';

    my $entry_id = $q->param('entry_id')
        or return $app->error($app->translate("No entry_id"));
    require MT::Entry;
    my $entry = MT::Entry->load($entry_id)
        or return $app->error($app->translate(
            "No such entry '[_1]'.", scalar $q->param('entry_id')));
    return $app->error($app->translate(
            "No such entry '[_1]'.", scalar $q->param('entry_id')))
        if $entry->status != RELEASE;


    ## Japanese Hiragana Check START_
    my $MyText = $q->param('text');
    $MyText = MT::I18N::encode_text($MyText, undef, 'euc-jp');
    if(($MyText ne "") && ($MyText !~ m/(\xA4[\xA1-\xF3]){2}/)){
         return $app->handle_error($app->translate(
                                  "Comment text is required."));
    }
    ## Japanese Hiragana Check END_


    require MT::IPBanList;
    my $iter = MT::IPBanList->load_iter({ blog_id => $entry->blog_id });
    while (my $ban = $iter->()) {
        my $banned_ip = $ban->ip;
        if ($app->remote_ip =~ /$banned_ip/) {
            return $app->handle_error($app->translate(
                                      "You are not allowed to post comments."));
        }
    }

投稿者 nasake : 2007年05月20日 20:10

トラックバック

このエントリーのトラックバックURL:
http://hoshinoumi-nasake.com/mt-tb.cgi/233

《TBについて》
 ・TB歓迎です。
 ・記事に、当サイトへのリンク(言及リンク)は必要ありません。
 ・送ったのに、すぐに表示されない:
  → 時々、「管理人の承認待ち」状態になってしまうことがあります。
    発見次第、表示させますので、暫くお待ち下さい。
 ・文字化けする:
  → 発見次第、修正して表示させますので、暫くお待ち下さい。

コメント (新着順に表示されます)

コメントがあれば、お願いします




保存しますか?