2005年2月24日
コメントスパム対策(その6)
再び Ogawa::Memoranda さん提供のスパム対策プラグインに対し、下記の改変を行いました。
- プラグイン:Quasi-Spam Filter Plugin 改変内容:コメントの投稿者(MTCommentAuthor)の文字列をフィルタ対象に加える
これまでのコメントスパムは本文にフィルタ文字列が含まれていましたが、数日前、本文ではなく投稿者にフィルタ文字列が含まれるスパムが10通ほど到来しました。プラグインは(コメントについては)本文のみのチェックとなっていますので、投稿者に設定された文字列もチェックするように改変してみました。
修正については、ソースを下記の赤字部分から青字のものに置き換えてください(2番目の赤字部分はさらに1行追加がありますのでご注意ください)。なお今回の改変コードはOgawaさんの案を頂きました。ありがとうございました。
sub comment_filter {
my ($eh, $app, $comment) = @_;
return !is_comment_spam($comment->text);
return !is_comment_spam($comment->text . ' ' . $comment->author);
}
sub comment_throttle_filter {
my ($eh, $app, $entry) = @_;
my $comment = $app->{query}->param('text');
my $author = $app->{query}->param('author');
return !is_comment_spam($comment);
return !is_comment_spam($comment . ' ' . $author);
}
sub comment_error {
my $app = shift;
my $q = $app->{query};
my $mode = $q->param('__mode') || $app->{default_mode};
return if $mode ne 'post';
if (is_comment_spam($q->param('text'))) {
if (is_comment_spam($q->param('text') . ' ' . $q->param('author'))) {
$app->add_methods(post => sub { });
$app->error("Spam Comment!");
}
}
sub comment_long_error {
my $app = shift;
my $q = $app->{query};
my $mode = $q->param('__mode') || $app->{default_mode};
return if $mode ne 'post';
if (is_comment_spam($q->param('text'))) {
if (is_comment_spam($q->param('text') . ' ' . $q->param('author'))) {
$app->add_methods(post => sub { $_[0]->handle_error("Spam Comments!") });
}
}
sub comment_redirect {
my $app = shift;
my $q = $app->{query};
my $mode = $q->param('__mode') || $app->{default_mode};
return if $mode ne 'post';
if (is_comment_spam($q->param('text'))) {
if (is_comment_spam($q->param('text') . ' ' . $q->param('author'))) {
$app->add_methods(post => sub { });
$app->redirect($URL);
}
}
sub comment_evil_redirect {
my $app = shift;
my $q = $app->{query};
my $mode = $q->param('__mode') || $app->{default_mode};
return if $mode ne 'post';
if (is_comment_spam($q->param('text'))) {
if (is_comment_spam($q->param('text') . ' ' . $q->param('author'))) {
$app->add_methods(post => sub { });
$app->redirect($q->param('url') || $URL);
}
}
コメント画面からの投稿については動作の正常性をを確認しておりますが、適用に際しましては個人の責任で行ってくださいますよう、よろしくお願い致します。
Comments [11]
| Trackbacks [9]