[hns-users:71] Re: board.cgi の spam 対策

Back to archive index

Kenji kenji****@club*****
2006年 11月 25日 (土) 21:46:35 JST


Kenji です。


On Wed, 1 Nov 2006 21:24:36 +0900
"Masao Ishikawa" <kasum****@it-de*****> wrote:

> 石川です。
> 
> うちはまったく違う方法でspamを弾いているので紹介します。
> 
> % diff board.cgi.org board.cgi
> 238a239
> >     print '<br>毛唐対策のため、名前には2バイト文字を含めてください。';
> 400a402
> >     die 'Did you do your homework? ;-)' if $name !~ /[\x80-\xff]/;

すばらしいですね!!
ローカルな対応ですが、日本での効果は高そうです。

こんな感じで、本文に日本語必須にして運用してみます。

Index: board.cgi.in
===================================================================
RCS file: /cvsroot/h14m/hns-perl/public_html/diary/board.cgi.in,v
retrieving revision 1.14
diff -u -r1.14 board.cgi.in
--- board.cgi.in	5 Jul 2006 02:43:49 -0000	1.14
+++ board.cgi.in	25 Nov 2006 12:40:09 -0000
@@ -399,6 +399,11 @@
     die 'invalid diary' if ($diary && (!($diary =~ /^[0-9]+$/) || length($diary) > 30));
     die 'invalid refid' if ($refid && (!($refid =~ /^[0-9]+$/) || length($refid) > 10));
 
+    # Prohibit Non-Japanese Comment
+    if ($Board::AllowJapaneseComment) {
+        die 'prohibited' if $body !~ /[\x80-\xff]/;
+    }
+
     my @dirty_words = '';
     my $spam_list = $HNS::System::DiaryDir . '/conf/spam_list.txt';
     my @spam_found = ();
@@ -408,9 +413,9 @@
 	close(SPAM);
 	foreach my $word (@dirty_words) {
 	    chomp($word);
-	    push(@spam_found, grep (/$word/, $body)) ;
-	    push(@spam_found, grep (/$word/, $subject)) ;
-	    push(@spam_found, grep (/$word/, $site)) ;
+	    push(@spam_found, grep (/$word/i, $body)) ;
+	    push(@spam_found, grep (/$word/i, $subject)) ;
+	    push(@spam_found, grep (/$word/i, $site)) ;
 	}
     };
     die 'prohibited' if (@spam_found);
Index: config.ph.in
===================================================================
RCS file: /cvsroot/h14m/hns-perl/public_html/diary/config.ph.in,v
retrieving revision 1.55
diff -u -r1.55 config.ph.in
--- config.ph.in	27 Oct 2003 16:40:11 -0000	1.55
+++ config.ph.in	25 Nov 2006 12:40:09 -0000
@@ -148,4 +148,6 @@
 
 $HideReadLinkWhenNoMsg = 1; # 1 -> on (default) , 0 -> off
 
+$AllowJapaneseComment = 0; # 1 -> needs Japanese in message body
+
 1;
Index: lib/Board.pm
===================================================================
RCS file: /cvsroot/h14m/hns-perl/public_html/diary/lib/Board.pm,v
retrieving revision 1.9
diff -u -r1.9 Board.pm
--- lib/Board.pm	5 Apr 2002 15:36:39 -0000	1.9
+++ lib/Board.pm	25 Nov 2006 12:40:10 -0000
@@ -25,9 +25,9 @@
 
 use strict;
 use Board::System;
-use vars qw($UseBoard $UnDeletableKey $ThreadsPerPage $MaxArticle $BoardData $HnsPath $RecentView $RecentTime $ReadStr $SepStr $WriteStr $LinkStr $HeadStr $Version $FieldMaxLen $URLMaxLen $BodyMaxLen $CSSFile $Title $RecentTime $BoardOnHNS $BodyLenOnHNS $HideReadLinkWhenNoMsg);
+use vars qw($UseBoard $UnDeletableKey $ThreadsPerPage $MaxArticle $BoardData $HnsPath $RecentView $RecentTime $ReadStr $SepStr $WriteStr $LinkStr $HeadStr $Version $FieldMaxLen $URLMaxLen $BodyMaxLen $CSSFile $Title $RecentTime $BoardOnHNS $BodyLenOnHNS $HideReadLinkWhenNoMsg $AllowJapaneseComment);
 
-$Version = "0.1.1";
+$Version = "0.1.2";
 
 $UseBoard = 0;
 
@@ -64,6 +64,8 @@
 # the option hides %readstr and %sepstr.
 $HideReadLinkWhenNoMsg = 1;
 
+$AllowJapaneseComment = 0;
+
 $CSSFile = '';
 $Title = 'Board';
 



H14m-hns-users メーリングリストの案内
Back to archive index