YY-BOARD,Joyful Note,Yomi-Searchについての
スパム投稿やスパム登録への対策



掲示板YY-BOARDのスパム投稿対策
掲示板へのスパム投稿(広告投稿)が多くなって削除が大変なのでスパム対策としてYY-BOARDに関してはYY-BOARD spam 対策改造のスパム対策スクリプトを利用しています。YY-BOARDについては上記のスパム対策スクリプトの利用とyyini.cgiの 投稿キーの使用(スパム対策)もONにすることで自動投稿に対してはある程度の防止はできます。
なお、掲示板の書き込みがあった時には、自動的にMAILを送るように設定してありますので、スパム対策スクリプトをすりぬけた広告投稿があった場合も迅速に削除します。
YY-BOARDでの手動の連続スパム投稿を防止するために yyini.cgi の同一IPアドレスからの投稿間隔を制限するを選択し20秒たたないと新たな投稿をできないようにしています。それとURLの自動リンク をしないという設定にするとSEO効果を無くすという事でスパム投稿対策としては効果があります。

掲示板YY-BOARDのスパム投稿対策(投稿禁止IPアドレスの登録)
きまっし金沢の関連サイトでは30個の掲示板を設置していますので、多くの掲示板に手動で1件ずつスパム投稿をしようとする例もあるので、投稿禁止IPアドレスの登録するBBSantispam-config.cgiというファイルを共通化して,1つのBBSantispam-config.cgiに投稿禁止IPアドレスの登録を行う事ですべての掲示板で投稿禁止IPアドレスでのアクセスを禁止することができるようにしました。
ちなみに2013年6月現在のBBSantispam-config.cgiはこちらです

すべての掲示板のBBSantispam.pmの
my $DEFAULT_CONFIG = "./BBSantispam-config.cgi";

my $DEFAULT_CONFIG = "/virtual/ID名/public_html/ドメイン名/フォルダ名/BBSantispam-config.cgi";
に変更します。/virtual/ID名 のところはXREAでのフルパス(絶対パス)で,サーバーによって違うと思います。
ドメイン名/フォルダ名のところは、日本語をそのまま入れるのでは無く、自分のサイトのドメイン名、フォルダ名を記入します。
XREAの場合はpublic_htmlの直下にあるindex.htmlのフルパスは
 /virtual/userID/public_html/index.html
となります。userIDは各自のドメイン名です。
Perlの場合はmy $DEFAULT_CONFIG = "http://ドメイン名/フォルダ名/BBSantispam-config.cgi";
という指定はできないようです。

これで ドメイン名/フォルダ名/に設置したBBSantispam-config.cgiに登録されたIPアドレスを変更するだけで,全ての掲示板にアクセスするIPアドレスを制限できます。
掲示板YY-BOARDのスパム投稿対策(連続投稿禁止情報の共有)
きまっし金沢の関連サイトには投稿禁止IPを登録して全ての掲示板で禁止IPではアクセスできないようにしてますが,チェックできない時間の新たなIPでの投稿には対応できないという状態でした。
そういう訳でYY-BOARD spam 対策改造の同一IPアドレスの短時間での連続投稿禁止の機能を利用して,きまっし金沢関連の1つの掲示板に投稿した場合には一定時間たたないと他の掲示板にも投稿できないような制限を加えることが出来るように掲示板を改造してみました。実際に試してみましたが,なんとか動作しました。

まずは全てのYY-BOARD掲示板のyyini.cgiを
# 制限投稿間隔(秒数)
# → $regCtl での投稿間隔
$wait = 120;

に設定し制限投稿間隔の時間を延ばします。場合によっては制限投稿間隔を大きくするため数字を120ではなくて600とか本来投稿数の少ない掲示板では1800とかにします。さすがに10分間隔で手動で投稿していると馬鹿馬鹿しくなって途中で退散します。

全てのYY-BOARD掲示板のyybbs.cgiに
#IPファイルを開く
open(IN2,"$logfile2") || &error("Open Error: $logfile2");

を設置します。
具体的には
local($no,$re,$dat,$nam,$eml,$sub,$com,$url,$hos,$pw,$col,$ico);
#IPファイルを開く
open(IN2,"$logfile2") || &error("Open Error: $logfile2");

# 記事を展開
$i = 0;
$flag = 0;
open(IN,"$logfile") || &error("Open Error: $logfile");

という具合です。

最後に全てのYY-BOARD掲示板のyyregi.cgiを改造します。
まず
# IPログを開く
open(IN2,"$logfile2") || &error("Open Error: $logfile");
@lines2 = ;
close(IN2);

# IPログのデータ書き出し
$top2 = shift(@lines2);
local($ip2,$tim2) = split(/<>/, $top2);

を追加します。
具体的には
# ファイルロック
if ($lockkey) { &lock; }

# IPログを開く
open(IN2,"$logfile2") || &error("Open Error: $logfile");
@lines2 = ;
close(IN2);

# IPログのデータ取り出し
$top2 = shift(@lines2);
local($ip2,$tim2) = split(/<>/, $top2);

# ログを開く
open(IN,"$logfile") || &error("Open Error: $logfile");
@lines = ;
close(IN);

# 記事NO処理
$top = shift(@lines);
local($no,$ip,$tim) = split(/<>/, $top);
$no++;

という具合です。
連続投稿チェックの引数を変更します。($ipを$ip2に,$timを$tim2に変更します)
具体的には
# 連続投稿チェック
$flag=0;
if ($regCtl == 1) {
if ($addr eq $ip2 && $times - $tim2 < $wait) { $flag=1; }
} elsif ($regCtl == 2) {
if ($times - $tim2 < $wait) { $flag=1; }
}
if ($flag) {
&error("現在投稿制限中です。もうしばらくたってから投稿をお願いします");
}

という具合です。
最後に# 親記事の場合中の#更新の後に(140行前後)に
# IPログ更新
@new="$addr<>$times<>\n";
open(OUT2,">$logfile2") || &error("Write Error: $logfile2");
print OUT2 @new;
close(OUT2);

を追加します。
具体的には
# 過去ログ更新
if (@data > 0) { &pastlog(@data); }

# 更新
open(OUT,">$logfile") || &error("Write Error: $logfile");
print OUT @new;
close(OUT);

# IPログ更新
@new="$addr<>$times<>\n";
open(OUT2,">$logfile2") || &error("Write Error: $logfile2");
print OUT2 @new;
close(OUT2);

という具合です。
yyregi.cgiの改造はわかりにくいので改造済みのファイルをダウンロードできるようにしました。yyregi.cgiはどのYY-BOARD掲示板も共通しているので改造したyyregi.cgiを全てのYY-BOARD掲示板にアップロードすれば手間が省けます。
Joyful Noteのスパム投稿対策
Joyful Noteに関しては掲示板改造支援サイトのスパム対策スクリプトを利用しています。
Yomi-Searchのスパム登録対策
きまっし金沢のイエロ−ページではYomi-SearchというCGIを利用しています。最近、SEO対策として業者による大量登録が増えています。きまっし金沢のイエロ−ページでは金沢に関係するローカルなサイトだけを登録しているので、業者による登録は該当外の無関係なサイトのスパム登録ばかりで煩わしいです。きまっし金沢のイエローページでは管理人が許可したサイトだけ登録するシステムなので無意味な登録できまっし金沢のイエロ−ページがメチャメチャになることはないのですが、大量のメールが来るだけで煩わしいので対策を講じました。
Yomi-Searchの公式サイトでのスパム登録制限機能でのSpamRegistCheckは最新バージョン Ver4.22 で使うと正常に動作しなく断念しました。
それで、まず最初に自動登録を防止するため、Yomi-Search簡易スパムブロックというページを参考に認証キーを設置し自動登録をできないようにしました。
その次に talk to oneself 2のYomi-Search の Spam 対策 というページを参考に、リファラ(参照元)をチェック、新規登録CGIにトップページからリンクを踏んでやってこない場合は、偽のサイトの新規登録CGIに強制的に飛ばすようにします。何故、偽のサイトの新規登録CGIに飛ばすのかというと、全然関係の無いページに飛ばしたり、エラーがおきるようにすると、業者は、なんとかスパム登録対策を突破しようとして別の手段を講じます。本来の新規登録画面と全く同じ画面のページに飛ばすとスパム対策をしてあることに気づかないので新たな対策を講じることは無いだろうという読みです。
基本的な操作としては
@Yomi-Searchを使っているサイト全体を別のディレクトリにも設置して正常に動作するように設置する。これが偽のサイトになります。
A偽のサイトのpl/cfg.cgi というCGIの30行あたりにある
'html_path_url'=>'', #HTMLファイルへのURL

'cgi_path_url'=>'', #CGIファイルを置くディレクトリのURL

'img_path_url'=>'', #画像ファイルを置くディレクトリのURL

を偽のサイトのディレクトリに変更が必要な場合は変更する。
B偽のサイトのtemplate/regist_new.htmlの最後のほうの行にある
<input type=submit value="&nbsp; 登録する &nbsp;"> <input type=reset value="リセット"><input type=checkbox name=preview value=on checked>プレビュー
を登録してもリセットするのと同じ動作をするように下記のように変更する。
<input type=reset value="&nbsp; 登録する &nbsp;"> <input type=reset value="リセット"><input type=checkbox name=preview value=on checked>プレビュー
C本来のサイトのregist_ys.cgi の35行目前後に以下の一行を加える。
print "Location: 飛ばしたいページのアドレス\n\n" unless ( $Eref =~ /your-domain/ );
きまっし金沢のイエローページの場合には
$ENV{'HTTP_REFERER'}="";
#-----------------#

$ENV{'HTTP_REFERER'}="";
print "Location:http://kimassi.net/yellowpage//ypage2/regist_ys.cgi?mode=new\n\n" unless ( $Eref =~ /kimassi.net/ );
#-----------------#
というように書き換えました。
http://kimassi.net/yellowpage/ypage2/はきまっし金沢のイエローページの偽のサイトのデレクトリです。kimassi.netはきまっし金沢のイエローページのYomi-Searchを設置した本来のサイトのドメインですので、利用する場合は自分の環境に合ったものに入れ替えて使ってください。

以上で、直接登録画面に飛び込んでくる業者によるスパム登録に対しスパム対策を施していることを気づかせずに何度登録しても登録できないようにするとともに、余計なメールチェックも必要なくなり、管理者に無駄な労力がかかる事を防げます。もちろん、トップページから入ってきた登録者は、正常に登録作業をすることができるとともにメールでの連絡も従来どおり行えます。