いままでまったくといっていいほどこなかったコメント・スパムが突然多量に、それも数百オーダーで来るようになりました。
Akismetを導入しているので、自動的にスパムフォルダへ振り分けられて実害はないのですが、毎日スパムが数百ずつ増えるのを見るのもうんざりですし、もしこの中に間違ってスパムじゃないコメントがまぎれていたとしても、目視で確認することは事実上不可能です。

■ Comment-Policy

ということで、Comment-Policyというプラグインを導入することにしました。
Comment-Policy WordPress Plugin のページなかほどの「Download」から「comment-policy.zip」を
ダウンロードして、必要なところを書き換えます。変更箇所のみ抜粋。

$cp_form_field_name = 'anynamewithletters';

チェックボックスの nameをここで指定した適当な文字列に Javascriptで置き換えます。スパムボットが
HTMLを読んでチェックボックスにチェックを付けようとしても、ロード時に nameを変えているので無効になるという対策ですね。
ですから、ここをデフォルトの ‘anynamewithletters’にしておくのは、あまりよろしくないと思いますから変えておきましょう。(スパムボットが scriptを読んで動作したら意味ないですが)
 

<div>
  <p>
  <label for="comterms"><span style="font-size:80%">チェックを入れてから送信してください。</span></label></p>
</div>

使うテーマによって、input要素を「width:100%」にしてあることがありますので、「width:auto」に指定しなおしておきます。(そうしないとチェックボックスとラベルが改行されてしまう)
ラベルのところに元々は「Comment Policy」へのリンクがあったのですが、今回はただのスパム避けなので、チェックを促す文字列にばっさり書き換えてしまっています。
 

if ( '1' != $userterms ) {
//  header("HTTP/1.1 403 Forbidden");
  die( __('<span style="text-align:left;color:red;font-weight:bold">チェックを入れてからコメントを投稿してください。</span>') );
}

チェックボックスにチェックを入れないで送信しようとしたときのエラー表示です。こちらも大胆に書き換えました。適用させるスタイルは適当に。
「header(“HTTP/1.1 403 Forbidden”);」があると、403エラーページを表示してしまうテーマがあったので、コメントアウトしてしまいました。なくても特に問題なさそうです。

■ まとめ

以上、換骨奪胎というか改悪に近い形での変更ですが、コメントスパム避けに特化すればということでお許しください。
これを導入してからコメントスパムがぴたっとこなくなりました。すごく効果ありますよ、これ。

1 返信

コメントはクローズされています。