2006年06月19日

nicky! スパム対策とコメント通知のカスタマイズ

nicky! を使ったブログへのスパムコメントがあまりにひどいので、対策をとってみました。
完全にブロックはできていないのですが、だいぶ減らせたので、ご紹介しときます。

それからついでに、コメント通知メールにコメントの内容を記載するようにしてみました。

【スパムブロック】
1)nicky.cgiの末尾(#end of scriptの直前あたり)にでも、下記のサブルーチンを追加します。

# ASCIIコード以外が含まれていると1を返す
sub ascii_check {
$string = $_[0];
my $spamflag = 0;
if ($string =~ /[^\x20-\x7E]/) {
$spamflag = 1;
}
return $spamflag;
}


2)サブルーチン「NickyInputComment」の中の、コメントを書き込む部分を下記のように書き換えます。
if( ($CommentMsg =~ /\x01/) || ($CommentName =~ /\x01/) ){
$ille = 1;
}else{
$ille = 0;
open(WDC, ">>$NickyComment");
binmode(WDC);
print WDC "$CommentName\x02$CommentURI\x01";
print WDC "$CommentMsg\x01";
print WDC "$cdate\n";
close( WDC );
}


my $spamcheck = 0;
if( ($CommentMsg =~ /\x01/) || ($CommentName =~ /\x01/) ){
$ille = 1;
}else{
# ASCIIチェック
$spamcheck = &ascii_check ($CommentMsg);
if ($spamcheck) {
$ille = 0;
open(WDC, ">>$NickyComment");
binmode(WDC);
print WDC "$CommentName\x02$CommentURI\x01";
print WDC "$CommentMsg\x01";
print WDC "$cdate\n";
close( WDC );
}
}


2)サブルーチン「NickyInputComment」の中の、メールを送信する部分を下記のように書き換えます。
if( $mtap && $mto ){


if( $mtap && $mto && $spamcheck ){


【メールにコメント内容を記載】
1)jcode.plを入手して、nicky.cgiと同じディレクトリに入れます。(わかる人は別ディレクトリのものを参照してももちろんOK)

2)サブルーチン「NickyInputComment」の中の、メールを送信する部分を下記のように書き換えます。

open(PIPE, "|$mtap -t -Fnicky!");
if( $error == 0 ){
print PIPE "To: $mto\n";
print PIPE "Subject: nicky!Notice ReciveCommentMessage\n\n";
print PIPE "Recieve Date : $cdate\n";
print PIPE "from : $ENV{REMOTE_HOST}($ENV{REMOTE_ADDR})\n";
print PIPE "agent : $ENV{HTTP_USER_AGENT}\n\n";
print PIPE "http://$ENV{HTTP_HOST}$ENV{SCRIPT_NAME}\?DT=$year$month$day$daysub#$year$month$day$daysub\n\n";
print PIPE "illegal post\n" if( $ille );
close(PIPE);
}


require "jcode.pl";
my $Name = $CommentName;
my $Message = $CommentMsg;
jcode::convert (\$Name, 'jis');
jcode::convert (\$Message, 'jis');

open(PIPE, "|$mtap -t -Fnicky!");
if( $error == 0 ){
print PIPE "To: $mto\n";
print PIPE "Subject: nicky!Notice ReciveCommentMessage\n\n";
print PIPE "Recieve Date : $cdate\n";
print PIPE "from : $ENV{REMOTE_HOST}($ENV{REMOTE_ADDR})\n";
print PIPE "Name : $Name\n";
print PIPE "Message : $Message\n";
print PIPE "http://$ENV{HTTP_HOST}$ENV{SCRIPT_NAME}\?DT=$year$month$day$daysub#$year$month$day$daysub\n\n";
print PIPE "agent : $ENV{HTTP_USER_AGENT}\n\n";
print PIPE "illegal post\n" if( $ille );
close(PIPE);
}


2006/06/29追記:
改造は自己責任でどうぞ。一応、自分で設置したnicky! で試してはいますが、この改造を行った結果について責任は負えませんのであしからず。
また、改造方法について個別の質問もご遠慮くださいませ。
posted by 文月夕 at 09:38| Comment(7) | TrackBack(5) | web技 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
いつもお世話になっています。
スパムきだしたので取りつけたいと思うのですがサブルーチン「NickyInputComment」というのはnicky.cgiのどこかに書いてあるものなのでしょうか?
それとも別ですか?
よくわからないので教えて頂けると嬉しいです。
宜しくお願いします。
Posted by 月下 at 2006年06月29日 11:09
>月下さん
サブルーチン「NickyInputComment」はnicky.cgiのファイル内にあります。
「sub NickyInputComment{」から始まるブロックです。
未改造のver2005/10/24でしたら2525行目です。

EUCの扱えるテキストエディタ(TeraPadなど)で開いて、「NickyInputComment」を検索していただければ見つかると思いますよ。
Posted by 文月@管理人 at 2006年06月29日 11:24
検索とかできるのも知らなかったです。
ちゃんと見つかり、書き換えできました。
有難う御座いましたw
Posted by 月下 at 2006年06月29日 12:41
またすみません。
書き換え上手くできたと思うのですがnicky.cgiをみると500エラーなんですがこれは、間違えてるってことでしょうか?
Posted by 月下 at 2006年06月29日 14:39
>月下さん
>500エラー
おっしゃる通り、ミスがあるものと思われます。
ソースをちゃんとコピーできているか、必要なファイルが設置されているかなどご確認ください。

こちらで個別サポートを行うつもりはございませんので、ご了承ください。
Posted by 文月@管理人 at 2006年06月29日 14:54
いけましたw
全部消してやってたんですけど
2にのってないのが真中にあったんですねえ。
気づかなくて^^;
それを残して上下だけ変えたらいけました。
失礼致しました。
Posted by 月下 at 2006年06月29日 16:07
nickyのスパムがうっとおしくなってきたので、
参考にさせ使わせてもらいました。
ありがとうございます(^^
Posted by Tami at 2006年07月12日 13:33
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック

スパムブロックとコメント通知にコメント内容記載
Excerpt: この「nicky!」へのスパムコメントがあんまりひどいので、対策を講じてみました。
Weblog: 迷ログ
Tracked: 2006-06-23 09:05

Nicky!関連メモ
Excerpt: Nicky!のスパム対策に関して文月夕さんが「nicky! スパム対策とコメント通知のカスタマイズ」の方法を公開しています。
Weblog: なにもないとこ
Tracked: 2006-06-28 04:18

nicky! スパムブロックその2
Excerpt: nicky! のコメント欄の名前、URI、コメント本文にそれぞれNGワードを設定する仕組みを作ってみました。
Weblog: ミノタウロス見聞録
Tracked: 2006-06-29 10:41

nickyカスタマイズ(自己責任版)
Excerpt: #個人的なカスタマイズです。nicky作者様に質問しないで下さい
Weblog: さなりずむ
Tracked: 2006-06-29 23:17

nicky! スパム対策
Excerpt: ミノタウロス見聞録「nicky! スパム対策とコメント通知のカスタマイズ」を利用させてもらいました。そんなに数は多くないんだけど、煩わしいので。やってみました。
Weblog: Tami’s Room:diary from k-tai
Tracked: 2006-07-12 13:36

PR

×

この広告は90日以上新しい記事の投稿がないブログに表示されております。