前回の対策はイマイチっぽいので、もうすこしマシな対策を考えてみました。今度はスクリプトがHTMLをある程度解析することを前提にしています。
<!--てな感じのテキストボックスを入れておきます。たぶんほとんどのブラウザではこれはコメントと解釈されて表示されないと思うので、POSTを受け取った時点で 'url' が存在したり、ましてや中身が書きかわっていた場合はコメントスパムである確率が非常に高いでしょう。昔読んだHTMLの教科書にはコメントの中にタグを入れるのはダメと書いてあった気がするので、文法上正しいのかどうか自信はありません。
<input type="text" name="url" value="http://">
-->
<div style="display:none">右のテキストボックスはスパム対策です。内容を書き換えないようお願いします。
<input type="text" name="url" value="http://">
</div>
今度は文法は正しいと思います。この場合スタイルシートを解釈しないブラウザでは表示されてしまいますので、説明文を併記しておく必要があるでしょう。ブラウザの種類を問わず、urlが書き換えられていたり存在しない場合はコメントスパムである確率が非常に高いです。
これくらいしか思い浮かびません。利用者への負担を皆無にしようとするとなかなか難しいですな。JavaScriptまで使うとかなり選択肢は広がるのですが、一応うちのサイトはlynxでもw3mでも見られることを目指してますし(動作を保証するという意味じゃないです:-)。なにより面倒クサいので、できれば何もせずに今の平和がずっと続いてほしいです。
□ 関連記事