たぶん3日で飽きる

A鯖(旧E鯖)lichtのDOLプレイ記とかDOL用ツールとか。DOLは無期限休止中。

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

PREV | PAGE-SELECT | NEXT

≫ EDIT

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

| スポンサー広告 | -------- --:-- | comments(-) | TOP↑

≫ EDIT

[CGI] スパム投稿対策

Web界の辺境にひっそりと佇むうちの商会掲示板にも、とうとうスパム投稿がやってくるようになりまして。
まともに使われてない掲示板とは言え放置するわけにもまいりませんので、対策を施してみました。
その方法をご紹介。




ではまず、スパム投稿の仕組みを理解するところから始めましょう。
スパム投稿がどうやって実現されているかと言いますと


知らんがな( ゚Д゚)


知らんけど多分、
httpのプロトコルに則ってWebサーバにリクエスト投げて、
掲示板のページのソースをGetして、
Formタグの中身を解析して、
NameとかCommentとかのそれっぽい名前のINPUTに対して投稿内容を割り当てて
Submitしてると思うよ。
もし私がスパムロボット作るならそうする。


で、そんなスパムロボットからどーやって守るかというと、
ページを開かないとわからない情報を投稿の条件にすればいいわけです。
このBlogのコメント投稿時にもキーワードとして数字を入力させる仕組みありますよね。
あれは人の目で見ないと判別が極めて難しい。スパムロボットでは対応できない。
ただ、利用者に手間がかかっちゃうんですよね~。
なので別の方法を取ります。

下記のJavaScriptを掲示板スクリプトのHTMLソースに突っ込み、BODY onLoad で呼び出します。

function L_SpamBlocker_Initialize(){
  try{
    var obj = document.forms;
    for ( i = 0 ; i < obj.length ; i++ ){
      obj[i].innerHTML += "<INPUT type='hidden' name='submit_key' value='aaaaa'>";
    }
  }
  catch (e){
    alert(e);
  }
}

何をしてるかというと、全てのFormタグの中に投稿キーを突っ込んでます。JavaScriptで動的に。
スパムロボットはJavaScriptの中身まで理解できないので、このキーを割り当てることはできないはず。
あとは投稿時の処理に、投稿キーのチェックを入れればOK。
・・・そこを解析するのが面倒なんですけどね。

ちなみに、「最初からHTMLソースにhiddenで投稿キーの枠を用意しておいて、ページロード時にvalueを変更する」という手段を以前とったことがありますが、それは失敗でした。
リセットボタン押したら投稿キーもリセットされちゃいます(;・ω・)



ここまで読んでもらって言うのもなんですが。
探せばもっといい方法あるよ、きっと(´ρ`)

| PG全般 | 2010-01-30 05:19 | comments:2 | TOP↑

リヒさんみっけw

今回のスパムブロック対策、感動しました。


感動しました。

すごい!の一言。なんでこんなのに気付けなかったんだろーってぐらい。

どっかで活用させていただきます!
世界一ありがとう!

| TEVA | 2010/01/31 01:25 | URL | ≫ EDIT

いらはーい。

いや、これでホントに防げるのかはわかんないんですけどね(;´Д`)

| licht | 2010/01/31 04:52 | URL | ≫ EDIT















非公開コメント

PREV | PAGE-SELECT | NEXT

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。