しばらく英文スパムコメントに悩まされていて、なぜかこっちのは何の対策もしてないのにピタっと収まったのでほっておいたんですが、あっちのほうはもうバンバン。毎日毎日10件くらいが投稿されて、メールは一日20件くらいくるし、ほんとに、ああコメント機能オフでよかったとか安心したりしたんですが、やっと対策できたっぽいのでメモっておく。
これの続きなんだが、結局preg_matchを使って、こんなかんじにしてみた。
if(preg_match(“/[\\x00-\\x7F]{100}/”, $_POST[‘honbun’]) && preg_match(“/[\\x00-\\x7F]/”, $_POST[‘daimei’]))
{
$error .= “はぁ?イミワカンナーイヨメナーイバーカバーカ”;
}
本文内にASCII文字の羅列をみつけ、かつタイトルにASCII文字が入ってたらエラー。ニュースネタのタレコミでURLだけの投稿もあるから無駄にASCII文字だからってバンバン弾くわけにもいかずこういうことに。
だいぶスッキリしないんだけど、何か他にいいアイデアがない。ちなみにマルチバイトだった場合のみ書き込む、っていうこれの逆パターンの方法は他のエラー構文やらPOST記述やらの兼ね合いで、書きにくいデス。それがいちばんいいのかもしんないけどねー。とりあえずこれで様子見てまたなんか来たら対策するよ。
いまのとこ静かだし。
あと、うちのサイトに来ていたスパムたちはURL欄にこっちのサイトURLが入るので同じ方法使ってその辺でもブロックするようにしておいた。
if(preg_match(“/ginya.lomo.jp/”, $_POST[‘URL’]))
ってかんじで。
そのうちこっちにも実装したいけど、こっちはもーほんとに原型とどめないくらいにいぢりたおしているのでもっと工夫が必要かもなぁ
メールフォームの方は、Javascriptでチェックしてるので実際あんま意味ないなーと思いながらも一応
if (document.mailform.honbun.value.match(/^[0-9a-zA-Z\+\-\/\*\,\.\<\>\= ]/))
くらいをしておいた。意味なさげー。