うちのサイトではさっぱり存在しないのですが、将来わたしのとこも有名になってコメントスパムがじゃんじゃん来た時に備えてどういう対策がありえるのか考えてみました。(←そんな状況にはぜったいならないという寂しいつっこみは却下^^)
例えば
<input type="hidden" name="hoge" value="ひみちゅのあんごう">というのを入れておいて、POSTされた時に"ひみちゅのあんごう"が無い場合は書込みが無かったことにするとか。実装は簡単ですがコメントスパム用のリストがひみちゅのあんごう入りで出回っていたらアウトですね(^^)。
これは効果は絶大でしょうが実装が面倒そうです。フォームに正解を入れるわけにはいきませんから、PHPのセッションとか使うといいのでしょうか。ちなみに、へた字があまりにもへたすぎる場合は人間でも読めないことがあるかも(笑)。
例えばIPアドレスが 192.168.0.1 という情報があるとすると、
% md5 -qs "192.168.0.1"といった感じで合言葉をその場で作ることができます。これを入力フォームに埋め込んだ後は(1)と同様です。合言葉を照合するのはPOSTを受け取った時点ですから、リストが出回っていても問題ありません。が、動的に合言葉を解析するスクリプトには無力です(^^)。加えて、iモードなんかは確かアクセスごとにIPアドレスが変化する可能性があったと思うので完全ではありません。
f0fdb4c3f58e3e3f8e77162d893d3055
(2)と似た考え方で HTML中に答えは出てきませんから スクリプトごときには解析不可能です。ただ、問題があまりにも難しいと不正解者が続出し、あまりにも簡単すぎる場合はばかにするなと怒られるおそれがあります。
うーむ、「実装が簡単」で「スパムコメントを完全に排除可能」で「利用者への負担は皆無」なのはちょっと難しそうですね。どれかを妥協しなければならないという場合、やっぱり「完全に」という部分を妥協するのが一番楽なんでしょうねー。まぁ必要になるまで先は長いのでゆっくり考えます(^_^)。
□ 関連記事
09/11 | ( Y.Kumagai ) |
平均50件/日のコメントスパムとの攻防を楽しんでいるY.Kumagaiです(爆) 既にフォームが出回っている上で(1)と(3)を実装するのは効果的ですが、最近の奴さんはフォームを解析してから送信してくるので浮動値でも弱いです。 (2)と(4)は効果的でしょうね。実装は正解のMD5等をhiddenしてサーバ側で入力値のMD5と比較すればセッション云々は不要です。ただ、利用者に負荷が掛かるのでウチでは未採用。 地味に効果てきめんなのが「n秒ルール」です。n秒未満、m分以上の送信は受理しないというものです。これの凄いところは人力スパムをも弾く点です。実装当初は苦情もありましたが、自然と慣れてくれるようです(^^) ウチのはこれら+αを組み合わせた超特許モノの仕様です(笑) あぁ~、長々とorz | |
09/12 | ( たかたに ) |
ごっ、50件ですか・・・。有名にならないほうがいいかも(^_^) それはそうと、セッションを使ってむにゃむにゃするのであれば、単純にセッションを使ってないものを排除すればよかったのかな? なんかまぬけな事を言ってたような。 あと教えて頂いた「n秒ルール」ですが、自分のページでは他に方法がなくても使いたくないです。いや、私自身がトロくて感想とかを書くのに1時間以上かかってしまうひとなので(笑)。メモ帳で書いてコピペすることもありますし。 ということで、その超特許モノで特許をとってウハウハな生活を・・・って申請したら公開されるのでダメでしたね(笑) |