コメントスパム根絶?
ある対策をしてからコメントスパムがまったく来なくなりました。というかはじき返しているみたいです。
その対策とは単純で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タグ付きのコメントはすべてエラーとなります。
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);
親切のためにテンプレートも修正しておくとよいと思います。
Comment Preview TemplateやCommment Error Templateの中に<$MTCommentPreviewBody$>というのがあると思いますが、それに対して属性remove_html="1"を指定しておきます。するとHTMLタグがついたコメントはタグが排除された状態でユーザに返され再度投稿を促すようになります。
ちなみにURLを自動的にリンクする機能をONにしている場合でも、URLは自動的にリンクになるので心配ないです。
コメント
コメントする
- 匿名でのコメントは受け付けておりません。
- お名前(ハンドル名可)とメールアドレスは必ず入力してください。
- メールアドレスを表示されたくないときはURLも必ず記入してください。
- コメント欄でHTMLタグは使用できません。
- コメント本文に日本語(全角文字)がある程度多く含まれている必要があります。
- コメント欄内のURLと思われる文字列は自動的にリンクに変換されます。
- 投稿ボタンを押してエラーがでなければ、投稿は成功しています。反映されるまでには少し時間がかかります。
コメントありがとうございます。
Posted by: ゴン : January 27, 2005 10:44 PM試してみます。
今後ともよろしくお願いいたします。