[perl] apeboard+ × IPスパムフィルター

▶ in perl posted 2006.08.17 Thursday / 22:35

CGI掲示板スクリプトapeboard+IPスパムフィルター というスパムをはじくフィルタースクリプトを導入する方法を紹介いたします。 apeboard+のVersion2.0からスパム対策版が出でいますが更にIPスパムフィルターを導入する事で海外からのスパムはほぼ全てはじく事が出来るでしょう。
以下、導入方法を当サイトを例に説明させて頂きます。
コンピュータ関連の備忘録 | IPスパムフィルターを Serene Bach で使う方法!から抜粋させて頂きました。)


1.ダウンロード
まずはIPスパムフィルターをダウンロードしてください。
そしてダウンロードしたファイルをローカル(ハードディスク上)にあるapeboard+があるフォルダに展開してください。
2.パスワード・文字コードの設定
アップロードする前にいくつか設定していたほうがいい事があるのでここで設定してしまいましょう。
ダウンロードしたファイルを展開すると、中に「 ipcheck 」というフォルダがあります。
このフォルダの中の 「 list.cgi 」 「 settei.cgi 」 「 logchk.cgi 」 というファイルがあります。このファイルをメモ帳などで開いて以下の箇所を修正します。
1行目に
#!/usr/bin/perl
という部分がありますが、まずこれを、プロバイダで定められたPerlへのパスを指定してください。
続いてパスワードを指定します
$pass = '';
という部分がありますのでここに自分好みのパスワードを指定してください。
たとえば「 hogehoge 」 というパスワードを指定したければ
$pass = 'hogehoge';
としてください。 続いて文字コードをapeboard+ で使われている文字コードと同じものを指定してください。 EUC-JP版をお使いでしたら
$moji = 'EUC-JP';
SJIS版をお使いでしたら
$moji = 'SHIFT_JIS'; ←たぶんこれでいいはず(^^ゞ
のように設定してください。
もう一つ忘れてはいけないのが、 「ipchk.cgi」です。 IP_Base.pm と同じカレントフォルダにあるので1行目の
#!/usr/bin/perl
をプロバイダで定められたPerlへのパスに修正しておいてください。
そして23行目にある
# SB & MTのチェック用フラグ(汎用で使うときは 0)
$issbmt = 1;
をSB & MT以外で使用するため
$issbmt = 0;
に修正してください。でないとエラーが出ます。
3.アップロード
ファイルの修正が完了したら、アップロードを行います。 このとき注意することは、使用されている文字コードが「EUC-JP」なら、 アップロード時には必ずそのコードにあわせるようにアップロードしてください。 FTPソフトウェアには転送時に文字コードを変換できるようになっています。 よくわからない場合はお手持ちのFTPソフトのヘルプをご確認くださいませ。
全体のディレクトリ構成とファイル位置は以下のとおりです。 (かっこ内はパーミッションの設定値)
【ディレクトリ構成例】
apeboard(apeboard+のカレントディレクトリ)
apeboard_plus.cgi
ipchk.cgi [755]
IP_Base.pm [644]
├─ ipcheck / [755]
│ ├ list.cgi [755]
│ ├ settei.cgi [755]
│ ├ logchk.cgi [755]
│ └ 他のファイル [666]
ipchk.cgiIP_Base.pmを カレントフォルダ(apeboard_plus.cgiが入っているフォルダ)にコピーします。
apeborad の カレントフォルダ(apeboard_plus.cgi があるフォルダ)に ipcheckフォルダを丸ごとコピーします。
パーミッションは上記の通りに設定してください
※suEXEC環境で使われる場合パーミッションを、フォルダは[701]、ファイルは[755]→[700]、[666 or 644]→[600]に読み替えて設定してください
4.修正前の動作確認
この段階では、単にファイルをコピーしただけで、本体のプログラムは何もさわっていません。
ですから、ここでの動作確認でエラーがでたとしては本体には何ら影響を及ぼしてはいないので、 焦らずにゆっくりと原因の追及ができます。 方法ですが、apeboard+のディレクトリにコピーして頂いた「 ipchk.cgi 」をブラウザで呼び出していただければOKです。
上記のように全てのチェック項目が「OK!」になっていれば大丈夫!プログラムをちょこっと修正して頂くだけでお使い頂けます。
確認後は、ipchk.cgiを削除する事をお勧めします。
5. apeboard_plus.cgiを修正
apeboard_plus.cgi」の15行目当たりを下記のように変えてください。
# 必要なファイルのパス指定 ------------------------------------------------
use IP_Base;
require './jcode.pl';
require './boardini.cgi';
require './skinini.cgi';
で、666行目あたりの「write_message」と言うコマンドの # データファイルを読み込む -----と言うところの前の部分に..
## ひらがなでチェックする --------------------------------------
$bbdy = $message;
&jcode'convert(*bbdy, 'euc');
if ($bbdy !~ m/(\xA4[\xA1-\xF3]){2}/){
&print_error("コメントを正しくお書きくださいね!");
}
## IP Spam Filter Start_! --------------------------------------
my $ctp = 1;
if (IP_Base::_allow_mail_address($mail,'./ipcheck') == 1){ $ctp = 4; }
if (IP_Base::_check_ip_base($ENV{'REMOTE_ADDR'},'./ipcheck',$ctp,'BBS')==0){
&print_error("あなたのIPアドレス $ENV{'REMOTE_ADDR'} は投稿制限の対象となっています。");
}
# データファイルを読み込む --------------------------------------


以上、完了となります。これで、英文のみのスパム投稿などがカットされます。
少々、分かりづらいところもあるかもしれませんが良ければお試しください。
PAGE TOP