コメントスパム対策

| コメント(0)

■MovableTypeコメントスパム対策(その1)
「半角英数記号しか含まない文字列の時は強制終了させる方法」 (by あけびさん)

mt-comments.cgiのuse strict;以下に次の記述を追加。
------------------------------------

use CGI qw(:standard);
if ($ENV{'REQUEST_METHOD'} eq "POST") {
my $tck = param('text');
die if($tck ne "" && $tck !~ /[\x80-\xff]/);
}

---------------------------------------


■上MovableTypeコメントスパム対策(その2)
上記方法の改訂版。

「コメント内に全角の句点「。」または読点「、」のいずれかがひとつも含まれない場合は強制終了になる方法」
正規の投稿フォーム以外からの投稿の場合(POSTメソッドではない投稿の場合)のための対策です。
上記で改善されない場合はこちらに (by あけびさん)

mt-comments.cgiのuse strict;以下に次の記述を追加
------------------------------------

use CGI qw(:standard);
my $sc_tx = param('text');
use Jcode;
Jcode::convert(\$sc_tx,'sjis');
die if($sc_tx ne "" && $sc_tx !~ /\x81(\x41|\x42)/);

-------------------------------------
句読点のない文章を書くことは少ないかと思いますが、句読点がなければエラーになる旨をコメント投稿欄に記述したほうがいいかもしれません。


■上MovableTypeコメントスパム対策(その3)
「連続したひらがなが必須」の方法(by あけびさん)

mt-comments.cgiのuse strict;以下に次の記述を追加
------------------------------------

use CGI qw(:standard);
my $sc_tx = param('text');
my @sc_s;
my $sc_n= 2;
my $sc_m= 2;
use Jcode;
Jcode::convert(\$sc_tx,'sjis');
@sc_s = $sc_tx =~ /(\x82[\xa0-\xf2]|\x81\x5b){$sc_n,}/g;
die if($sc_tx ne "" && scalar(@sc_s)<$sc_m);

------------------------------------
$sc_nでひらがなの必須連続文字数を、
$sc_mで、$sc_nで指定した文字列の本文中の必須数を指定します。

例えば、
my $sc_n= 4;
my $sc_m= 2;
なら、本文中に4文字以上連続したひらがな文字列が2個所以上に必要ということです。
連続していればひとつのひらがな文字列とみなしますので、
「あいうえおかきくけこ」は「あいうえ」+「おかきく」とはカウントされず、
10文字のひとつのひらがな文字列とみなします。

my $sc_n= 1;
my $sc_m= 1;
なら、本文中に1文字でもひらがながあればOKとなります。

コメントする