< コマンドラインコピーツール | VB6 実行時エラーのコールスタックを採取する小ネタ >

January 14, 2005

mt-comments.cgi に簡易スパムフィルタを実装する

あまりにもコメントスパムが多くなってきたので、mt-comments.cgi に急遽自前フィルタを追加してみた。結構いい感じ。

下記は 'sex' と 'porn' を含むコメントをポストできなくした例。

実際にはスパム業者はある程度絞れるので、具体的に特定の URL を本文に含むもの、などとしている。

#!/usr/bin/perl -w

# Copyright 2001-2003 Six Apart. This code cannot be redistributed without
# permission from www.movabletype.org.
#
# $Id: mt-comments.cgi,v 1.34 2003/02/12 01:05:31 btrott Exp $
use strict;

#add unti-spam --->
use CGI;

if ( $ENV{ 'REQUEST_METHOD' } eq 'POST' ) {
	my $q		= new CGI;
	my $comtext = $q->param( 'text' );
	die if ( $comtext =~ /\b(?:sex|porn\w*)\b/i );
}
#<--- add unti-spam

my($MT_DIR);
BEGIN {
    if ($0 =~ m!(.*[/\\])!) {
        $MT_DIR = $1;
    } else {
        $MT_DIR = './';
    }
    unshift @INC, $MT_DIR . 'lib';
    unshift @INC, $MT_DIR . 'extlib';
}

eval {
    require MT::App::Comments;
    my $app = MT::App::Comments->new( Config => $MT_DIR . 'mt.cfg',
                                      Directory => $MT_DIR )
        or die MT::App::Comments->errstr;
    local $SIG{__WARN__} = sub { $app->trace($_[0]) };
    $app->run;
};
if ($@) {
    print "Content-Type: text/html\n\n";
    print "An error occurred: $@";
}

トラックバック

このエントリーにトラックバック:
http://frog.raindrop.jp/cgi-bin/mt/mt-tb.cgi/781

コメント

これ書いた端からスパム襲来。
フィルタ追加しなくちゃ。

test

さらに a タグ使用不可にしてみました。

なにやら SPAM 対策のパッチが公開されているようです。
コメント SPAM でなく、SPAM メール関連のようですが。
http://www.movabletype.jp/archives/2005/01/_movable_type_1.html

コメントする

※ コメントスパム対策のため、コメント本文はおはよう、こんにちわ、こんばんわのいずれかより始めるようにしてください。

name:
email:

※ 必要ですが、表示しません。

url:
情報を保存する ?