ひとりごと

新しい記事:[1741]  古い記事:[1739] 表示単位 :

ついったー[おとなり日記] かがみさん Y.Kumagaiさん

2006/09/11 (月)

・ コメントスパム対策

うちのサイトではさっぱり存在しないのですが、将来わたしのとこも有名になってコメントスパムがじゃんじゃん来た時に備えてどういう対策がありえるのか考えてみました。(←そんな状況にはぜったいならないという寂しいつっこみは却下^^)

  1. フォームの中に合言葉を入れる

    例えば

    <input type="hidden" name="hoge" value="ひみちゅのあんごう">
    というのを入れておいて、POSTされた時に"ひみちゅのあんごう"が無い場合は書込みが無かったことにするとか。実装は簡単ですがコメントスパム用のリストがひみちゅのあんごう入りで出回っていたらアウトですね(^^)。

  2. GMailの登録時のようにへた字を画像で表示して入力させる

    これは効果は絶大でしょうが実装が面倒そうです。フォームに正解を入れるわけにはいきませんから、PHPのセッションとか使うといいのでしょうか。ちなみに、へた字があまりにもへたすぎる場合は人間でも読めないことがあるかも(笑)。

  3. 相手の情報から合言葉を作成する

    例えばIPアドレスが 192.168.0.1 という情報があるとすると、

    % md5 -qs "192.168.0.1"
    f0fdb4c3f58e3e3f8e77162d893d3055
    といった感じで合言葉をその場で作ることができます。これを入力フォームに埋め込んだ後は(1)と同様です。合言葉を照合するのはPOSTを受け取った時点ですから、リストが出回っていても問題ありません。が、動的に合言葉を解析するスクリプトには無力です(^^)。加えて、iモードなんかは確かアクセスごとにIPアドレスが変化する可能性があったと思うので完全ではありません。

  4. '1+1=?' などの問題を表示して答えを入力してもらう

    (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時間以上かかってしまうひとなので(笑)。メモ帳で書いてコピペすることもありますし。
ということで、その超特許モノで特許をとってウハウハな生活を・・・って申請したら公開されるのでダメでしたね(笑)
[つっこみ]

新しい記事:[1741]  古い記事:[1739] 表示単位 :
※このページへのリンクは自由です。リンクの方法については[つっこみ]で表示されるページの最後をごらんください。
たかたに(takatani@mars.dti.ne.jp)