[ トップページ ]
Web とインターネット:Movable Type

Movable Type のプログラム変更をともなうスパム対策の第 1 歩

これまで,このブログに対するスパム対策としては Movable Type の設定をかえることで対処してきましたが,1 日に数 1000 のスパムをあびることもあり,ついにプログラムの変更をともなう対策にのりだしました. 第 1 歩としてはコメント投稿フォームのなかにかくされたフィールドをもうけて検査するという単純な方法をとってみました.

これまで,スパムの分析や対策を 「ブログへの最近のスパム数」,「このブログへのスパムの急増」,「スパムのさらなる増加と対策」,「つづく,ブログへのスパムとのたたかい」,「すぎさったブログへのコメント・スパムの嵐」 などの項目に書いてきました. これらでとった対策は Movable Type の設定を変更したり,スパム・フィルタのパターンを追加したりすることでした. 「すぎさったブログへのコメント・スパムの嵐」 という項目では,とりあえず嵐が去ったことを書きましたが,嵐はその後もたびたびやってきます. 最近では 1 日に数 1000 もフィルタできないスパムがおしよせることもあり,ついにプログラム変更をともなう対策にのりだしました.

Movable Type をつかったブログ・サイトのなかには,スパムをさけるために,4~8 桁くらいの数値を画像で表示させて,それを投稿者によみとらせる方法をとっているところもあります. しかし,この方法は投稿者の負担をふやすうえ,サーバの負荷も多少ですがあがります. まずはもっと単純な方法をためしてみようとおもいました.

そこでとった方法は,コメント投稿フォームのなかに 2 つのかくしフィールドをいれて,それらがふくむ値が一致するかどうかをみるという方法でした. つまり,「エントリー・アーカイブ」 のテンプレートをかきかえて,つぎのようなフィールドをいれます.

<input type="hidden" name="spam-protection-1" value="?" />
<input type="hidden" name="spam-protection-2" value="?" />

ここで ? のところには適当な数値や文字列をうめこみます. 従来との互換性をとるために既存のフィールドの使用もかんがえましたが,適当な方法がないのであきらめて,すべてを再構築することにしました.

つぎにプログラムをかきかえました. かきかえるべきプログラムは Movable Type の lib/MT/App/Comments.pm のなかのつぎの部分です. 赤字のところが追加した部分です.

    my $text = $q->param('text') || '';
    $text =~ s/^\s+|\s+$//g;
    if ($text eq '') {
       return $app->handle_error($app->translate("Comment text is required."));
    }

    # Spam protection (by YK 080608)
    my $spam_protection_1 = $q->param('spam-protection-1');
    if ($spam_protection_1 eq '' ||
        $spam_protection_1 ne $q->param('spam-protection-2')) {
       return $app->handle_error($app->translate("Invalid comment form."));
    }

    my ($comment, $commenter) = _make_comment($app, $entry);
    my $remember = $q->param('bakecookie') || 0;
    $remember = 0 if $remember eq 'Forget Info'; # another value for '0'

しばらくはこれで様子をみて,必要ならまた対策をとりたいとおもっています.

キーワード: コメント・スパム, 迷惑コメント

トラックバック

このエントリーのトラックバックURL:
https://www.kanadas.com/mt/mt-tb.cgi/2549

コメントを投稿

Google でブログを検索:

メインページアーカイブページも見てください.
Creative Commons License
このブログはつぎのライセンスで保護されています. クリエイティブ・コモンズ・ライセンス.
Powered by Movable Type