・Pebble – コメントスパム対策
・Pebble – コメントスパム対策 Round 2
・Pebble – トラックバックスパム対策
最近コメントスパムがひどいです。
以前 Pebble のバグデータベースに CAPCHA の実装例が載っていたけど、Pebble2.0 の公開にあわせてか過去のバグ情報が一切合切消されてしまった様子で見あたりません。
で、あんま凝った対策をするのも面倒なので、/common/jsp/commentForm.jspf にちょっと工夫をしてみました。
デフォルトでは form のアクションに存在しないダミーのアクションを設定しておき、サブミット時に動的に正式なアクションへ書き換えるというものです。
具体的にはこんな感じ。
<form name=”addComment” action=”dummy.action#form” method=”POST” accept-charset=”<c:out value=”${blog.characterEncoding}” />”>
.
.
.
<input name=”submit” type=”submit” onclick=”this.form.action='addComment.action#form'” Value=”<fmt:message key=”comment.previewButton”/>” />
<input name=”submit” type=”submit” onclick=”this.form.action='addComment.action#form'” Value=”<fmt:message key=”comment.addCommentButton”/>” />
<noscript>JavaScript を有効にしていないブラウザでは投稿出来ません。</noscript>
コメントスパムを登録するロボットの多くは JavaScript に対応していないだろうという仮定に基づいた対策です。
つまり、ロボットはダミーの URL に対して POST してしまうだろうということ。
JavaScript まで解析、実行してくれる利口なロボットには無意味だし、正しい POST 先はハードコードされているので対応するのは簡単ですが、個人レベルのサイトではそれなりに効果があるんではないでしょうか?
実際の効果の程は明日中にはわかるでしょう・・。
追記(9/11):
とりあえず効果があるみたい。
毎日数十件あったスパムコメントが0件にっ!