- 締切済み
フォーム経由で送られるURLつきスパムを排除したい
cgiによる簡単なフォームを設置しています。 が、そこから海外のspamが複数送られてくるので、その回避方法を考えています。 フォームは名前、メールアドレスを送信するだけの簡単なものです。 html側のinputタグ内でmaxlengthを指定していますが、 それを超えた長さの、URLを含む宣伝が送信されてきてしまいました。 最初に送信されてから昼夜を問わずどんどん来るようになったので、 ソフトか何かで送信しているかもしれません。 入力データを直接cgiのアドレスか何かにくっつけて送っていると思うのですが、 このようなポストをはじくことはできますでしょうか? 考えられる回避方法は ・入力値に規定の文字数以上のものが入るとエラーを出す ・入力値にURLが入るとエラーを出す など・・・ cgi側には一応、投稿時に入力データをチェックするサブルーチンがあり、 ここに何か追加する感じで上記の処理ができないでしょうか。 sub datacheck { if (!$name) { &Print_Error('name'); } else { $name =~ s/?r?n|?r|?n//g; } if (!$email) { &Print_Error('email'); } elsif ($email !~ /.+?@.+?..+/) { &Print_Error('email'); } else { $email =~ s/?r?n|?r|?n//g; } return; } IPでのアクセス制限も考えたんですが、 プロキシを通しているようなのであまり効果がなさそうです。 前述のようにガンガン送られてくるので、 他のまっとうな投稿が読みにくくなったり、 ログファイルがめちゃくちゃになってしまうので、とても困っています。 perlの技術力は、切り貼りができる初心者程度なのですが・・ よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- nyaa519323116
- ベストアンサー率51% (41/79)
自分の経験上、一番効果があると思えるのは「合い言葉」です。SPAMMERな連中は、botなどのソフトで自動送信してくるので、「投稿に人手が必要」なのが一番の苦手です。何でもイイから、人間が考えて手で入力させる欄を1つ設けるだけで効果があります。 掲示板スパム対策 で説明されている他の対策も一通り施してみましたが、 - これまでで一番の効果が上がっているのが「合い言葉」。「合い言葉」として、簡単な足し算引き算の式を表示して、答えを入力してもらうやり方をしています。これを初めて以来、SPAM投稿は1度もなく、一方、まっとうな投稿はきちんと入ってきています。 - ついで、「メッセージ内へのURLの書き込みを禁止する」。 - つぎが「URL(http://~)の複数書き込みを禁止」。2回以上は禁止、というのでも結構効果あり。ただ、最近はURLの偽装やURLを書いてこないSPAM投稿も多い。 - 海外からのSPAM投稿に対しては、「NGワードの書き込みを禁止」もそれなりに効果ありですが、NGワードもころころと変えてきますし、日本語のSPAM投稿には対処が難しいのが難点。 - 「掲示板へ直接アクセスした場合の投稿を禁止する 」のには余りひっかかるSPAMMERはいないようです。
- steel_gray
- ベストアンサー率66% (1052/1578)
http://swanbay-web.hp.infoseek.co.jp/bbs_spam.html こちらが投稿spamに関する情報がまとまっていて、 改造コードのサンプルなどもあります。 掲示板とメールフォームでは違いもありますが参考になると思います。