January 04, 2005

コメントスパム根絶?

ある対策をしてからコメントスパムがまったく来なくなりました。というかはじき返しているみたいです。

その対策とは単純でHTMLタグをコメントとして認めない、ただそれだけです。ただしやるからには方法は徹底しました。Movable Typeに標準で備わっているHTML投稿禁止機能を用いるのではなく(これは投稿されたコメントからHTMLのタグを排除したものが投稿されてしまいます)、コードをハックしてHTMLタグが使われた場合は投稿を許さずに修正を要求する、というように改造しました。

スパマーとしては<a href="">のリンクをつけられないとコメントスパムする意味がないといことなのでしょうか?

方法は続きをどうぞ。

/path/to/mt/lib/MT/App/Comment.pmを修正します。

    $comment->text($q->param('text'));
となっている部分(MT2.661だと189行目付近)を
    my $comment_text = $q->param('text');
    my $sanitized = remove_html($q->param('text'));
    if($comment_text ne $sanitized){
        return $app->handle_error($app->translate('HTML tag not allowed.'));
    }
    $comment->text($comment_text);
と修正します。これによってHTMLタグ付きのコメントはすべてエラーとなります。

親切のためにテンプレートも修正しておくとよいと思います。
Comment Preview TemplateやCommment Error Templateの中に<$MTCommentPreviewBody$>というのがあると思いますが、それに対して属性remove_html="1"を指定しておきます。するとHTMLタグがついたコメントはタグが排除された状態でユーザに返され再度投稿を促すようになります。

ちなみにURLを自動的にリンクする機能をONにしている場合でも、URLは自動的にリンクになるので心配ないです。

10:35 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | この記事をdel.icio.usでブックマーク | トラックバック
このエントリーのトラックバックURL: http://fenrir.naruoka.org/mt/mt-tb.cgi/352
コメント

コメントありがとうございます。
試してみます。
今後ともよろしくお願いいたします。

Posted by: ゴン : January 27, 2005 10:44 PM
コメントする









名前、アドレスを登録しますか?
(次回以降コメント入力が楽になります)
  • 匿名でのコメントは受け付けておりません。
  • 名前(ハンドル名可)とメールアドレスは必ず入力してください。
  • メールアドレスを表示されたくないときはURLも必ず記入してください。
  • コメント欄でHTMLタグは使用できません。
  • コメント本文に日本語(全角文字)がある程度多く含まれている必要があります。
  • コメント欄内のURLと思われる文字列は自動的にリンクに変換されます。