一応、コメントを受け付けられるように単一投稿ページ等にはコメントフォームを設置してあるものの、まともなコメントをいただくことは全くなくて、送信されてくるのは外国からのスパムコメントばかり。
そりゃそうとわかってはいるのだけど、なかなかうっとうしいものです。

コメントフォームにキャプチャ機能を付けてくれるプラグインを使ってみたところ、スパムは激減、たまにちらほらとそれをかいくぐってくるものがあるぐらいでした。
たまにすり抜けてくるところはIPアドレスをアクセス拒否のリストに加えていって、ほぼ現状ではスパムコメントは0になっています。

しかるに私が使っていたキャプチャプラグインはjqueryを使っているようで、必ずそれに関するエラーが出ていました。
SyntaxHighlighter Evolvedも使っているのでそれも絡んでのことかも。
ただ、エラーがどうも気になるし、できればページの表示を早くするためにもjquery等を起動せずにすむならそのほうがいい。

もっと、簡単に防御対策ができないものかとネットをうろうろして、コメントフォームにチェックボックスを増設する方法を試してみる事にしました。

コメントフォームのあるページのソースを見てみると、hidden属性input要素に投稿IDを設定して送信しています。
wordpressはコメントが送信された時にこの投稿IDが無いときは受け付けないようになっているとこのとです。投稿IDがなければどの投稿に送信されたコメントか判別できませんから当然のことです。
そこで増設したチェックボックスがチェックされない時は投稿IDを消してしまって、処理を止めてしまえば良いのではという目論見だったのですが、チェックボックスの値の有無だけで処理を止めてしまってもよさそうです。
ただ、スパムコメントロボットがチェックボックスに関しては何もしないということが前提ですが、その辺りはよくわからないので様子を見るしかありません。

コメントフォームに新たに要素を追加するのはアクションフックcomment_form_after_fieldsを使えば出来るとの事です。このフックに関しての詳細は、載っているのが英語のページばかりなのであまり読んでいなくてわかりません。
とりあえず見よう見まねで関数を作ればよいと。

<?php
function add_comment_checkb() {
?>
	<p class="comment-form-check">
		<label>コメント送信時にチェックしてください</label>
		<input type="checkbox" name="comment_check" id="comment_check" value="send" />
	</p>
<?php
}
add_action( 'comment_form_after_fields', 'add_comment_checkb' );
?>

そしてチェックボックスのチェックの有無で処理を判断するアクションフックpre_comment_on_postを使えばよいとのこと。
このフックはコメントがデータベースに登録される前に処理されるという事です。

<?php
function my_comment_spam_check( $comment_post_ID ) {
	if ( ! isset( $_POST['comment_check'] ) ) {
		wp_die( 'ERROR' );
	}
}
add_action( 'pre_comment_on_post', 'my_comment_spam_check' );
?>

実際には、ログを残したいのでその処理も入れてあります。
試してみたところちゃんと作動していますから、あとはスパムコメントロボットの出方次第というところです。

この変更を施したのが2012年11月27日。
ただの偶然か、さっそくこの日新顔のスパムコメンターが1件現れてコメントの代わりにログに記録を残しています。
一応、効果はちゃんとありそうですがまだたったの1件ではなんとも言えないかな。

追記:10日以上経った12月9日現在において、合計12件ほどがコメント失敗に終わってログだけ残しています。
ユーザーエージェントを見ると、このうち半数ほどがIPを変えているだけの同一者と思われるTencentTravelerなるブラウザを使っている輩の様。
今のところは全て防ぐことが出来ているようです。
しかし、いつも思うことなのだけどスパムコメントというのはやっていて効果を得る事があるのだろうか。

Leave a Reply!

JavaScript is necessary to send a comment.
You can edit and delete your comment if you input a edit key.
Edit key is necessary for attesting you when you edit and delete it.
The tag of HTML cannot be used in comment.
When you comment for the first time, it is displayed after the approval of the administrator.
Because I cannot speak English so much, it takes time to answer.
Required fields are marked *.

※Please enter more than 5 characters only alphabets.
※Edit or delete are possible for 2000 days after approval.

*

♠Simplistic Comment User Editable v4.0

♠When visitors leave comments on the site this site collect the data shown in the comments form, and also the visitor’s IP address and browser user agent string to help spam detection.
♠This site does not use cookie when visitors leave comments and commenter edit comment.
♠This site uses Akismet to reduce spam. Learn how your comment data is processed.

Comments feed

Trackback URL : https://strix.main.jp/wp-trackback.php?p=28429

Sanbanse Funabashi

Top

スクロールさせるか画像をクリックすると元に戻ります。