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]
Now loading...
ギターに入った猫
掲載広告募集
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner


AMN
Categories
Monthly Archives
2017年
2016年
2015年
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
2005年
2004年
2003年
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 6.0.3