xoops mylinks スパム対策
2週間ほど前から、相互リンクとして利用している「mylinks」へのスパムが激増。
アダルトオンリーで、「超ウザーイ」ってなもの。
削除しても削除しても1時間に一度の割合で書き込まれるので、キリがない。
いっそのことmylinks使うの止めようかと思ったけど、正しく相互リンクを申し込んでくれるもいるだろうから、単純に受付禁止にするわけにもいかない。
というわけで、お手軽スパム対策を考えてみた。
変更箇所は2カ所。
modules\mylinks\templates\mylinks_submit.html
modules\mylinks\submit.php
まずは、「mylinks_submit.htm」で、
<form action=”submit.php” method=”post”>
の下に次の文を追加
<input type=”hidden” name=”sb_showtime” value=”<{php}>echo time();<{/php}>” />
次に「submit.php」で、
if (!empty($_POST[‘submit’])) {
の上に次の文を追加
//Spam buster! The post within 3 seconds is invalid.
$sb_after_sec = 3;
if(time() < $_POST[‘sb_showtime’] + $sb_after_sec) die;
最後にモジュールを再インストールして準備完了。
解説ぅ~~~
簡単に書くと「リンク申し込み画面が開いてから3秒以内に投稿されたものはスパムと判断しちゃうよ」という仕組みです。
人間工学に基づいた(嘘)、お手軽スパム対策。
簡単だけど、効果は抜群。スパム投稿はなくなりました。
スパム投稿はプログラムを使ってされるのが「常識」なので、単純な「3秒ルール」でOK。
3秒以内に入力してしまう人もいるかもしれませんが…。
「判定時間が短すぎる」「長すぎる」という場合は、$sb_after_secの値をイジッてください。
スパムの排除具合を見たい場合は、次のようにすればOK。
if(time() < $_POST[‘sb_showtime’] + $sb_after_sec){
$handle = fopen(“spam.txt”,”a”);
fwrite($handle, date(“Y-m-d H:i:s”).” “.$_POST[“title”].”\n”);
fclose($handle);
die;
}
(spam.txtのパーミッションを書き込み可にすることを忘れずに)
ディスカッション
コメント一覧
まだ、コメントがありません