05≪ 2017/06 ≫07
123456789101112131415161718192021222324252627282930
個別記事の管理2013-03-30 (Sat)
前回の近況報告記事に掲示板スパムの事を書きましたが、未だに英文spamが掲示板に書込みされます。。(-_-;)
昨日は一気に65件の書込みがぁぁ~!ホント、嫌になってきます。マジで、腹が立ってきますっ!
先般施した対策では、ちょっと甘いのかな~と、次なる手立てを講じる事に。

再度cgi名を変更し、且つcgiにロボット検索よけのmetaタグを追加。
<meta name="robots" content="noindex, nofollow">

次に、投稿モード名を変更。
掲示板cgiのデフォルトのモード名は大体「reg」か「regist」だと思うので、ここを他のものに変更すると掲示板にアクセスせずに投稿してきたメッセージをはじく事が出来ます。
先ず、投稿フォーム部分を探し、
<input type=hidden name=mode value="regist">
赤文字の部分を好きな半角英数小文字に変更します。
そしてcgi先頭付近に、モード($mode)によってサブルーチン(&文字列、で記載される)を選ぶif文/elsif文があるので、そこの
if ($mode eq "regist") { &regist; }
という文の赤文字部分を先程変更した文字に変えます。
参考・引用させて頂いたのはこちら↓
KENのつぶやき 掲示板を超簡単にガードせよ
KENのつぶやき(TOPページ)

そしてcgiに、「日本語がないメッセージの書き込みを禁止する」改変をします。
英文spamの多くは日本語が無いので、日本語の無いコメントを弾きましょう!というもの。
しかし、中には少しだけ日本語を入れるspamも有るらしいので、句読点の無いコメントも弾きます。
参考及び引用させて頂いたのはこちら↓
掲示板改造支援サイト

if ($in{'comment'} !~ /(\x82[\x9F-\xF2])|(\x83[\x40-\x96])/) {
&error("日本語を書いてください。");
}
my @period = ("、",",","。",".");
my $flag = 0;
foreach (@period ) { if ($in{'comment'} =~ /$_/) {$flag = 1; last;} }
if (!$flag) { &error("句読点を書いてください。"); }

上記を入れるだけ。
if ($in{'comment'} およびcommentの部分はスクリプトによって異なります。ちなみに弊サイトのcgiでは
if ($FORM{'comment'} になってました。(スクリプト内、入力チェック部分に入れました。)

cgiを別名で保存してみて、試しに半角英数を適当に羅列して投稿してみると…
おおぉぉ~~!\(◎o◎)/!「error 日本語を書いてください。」
日本語も少し入れて投稿、すると、「error 句読点を書いてください。」

弊サイトのBBScgiは既に配布先が無くなってしまっている為、どこを改変したら良いやら手探りでしたが、何とかなったような気がします。
コピーをバックアップ用に作って作業すると安心です。

これで暫くは大丈夫?かも。
掲示板ご利用の方、不具合・お気付きの点がございましたらメールにて連絡下さいませ。m(__)m
宜しければポチッと♪→FC2 Blog Ranking
Theme : webサイト作成 * Genre : コンピュータ * Category : Web制作備忘録
* Comment : (0) * Trackback : (0) |
コメント







管理者にだけ表示を許可する