- 締切済み
formの中でhidden typeを使い特定の言葉をブロック
こんにちは。 スパムメール対策のためメールフォームにJavaスクリプトを使ったCAPTCHA(画像の文字を入力してもらう)機能をつけたのですが、スパムがこのスクリプトを無視してか、スルーして入ってきてしまいます。 そこで、いつもこのスパムメールがUnknownと入力してくる項目があるので、input type="hidden"をつかって、Unknownと入力されていたら送信できないようにはできないでしょうか。 <input type="hidden" name="mail" value="あいうえお"> とすると、"あいうえお"以外を入力すると送信できない、と理解しているのですが、その逆で"あいうえお"を入力した場合だけ送信できない、というようにです。 実際のフォームメールのサイトはこちらです。 http://www.goldenbaykayaks.co.nz/form/form.html どうぞよろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Yune-Kichi
- ベストアンサー率74% (465/626)
「送信出来ないようにする仕組み」を作るということは無理です。 フォームの内容が分かっていれば,内容を送信するプログラムを作ること自体は技術的に難しいことではありません。 スパム対策だけに限らず,データの有効性の確認は,必ずサーバー側で行う必要があります。 クライアント側のチェックは,ユーザーが使う上で便利だから以上の意味は持たないと思ってください。
- arexis
- ベストアンサー率66% (66/99)
さっき追記で書こうと思ったのですが 一般的にしつこいスパムはフォームを書き込んで送信する手動ではなくてCGIに直接アクセスしてくるのが普通です。 IPやREF『どこから送信』なども偽装してるケースがほとんどなので、軽いチェックで通してるCGIだとフォームから送られたと判断して通してしまいます。 JavaScriptでのチェックでは頑張ってもフォームが送信されるまでの部分しか担当できません。 フォームを無視していたら、新しくつけたそのチェックもご希望の方法も一切役に立たないです(^^; 実際今もスパムが入るようですからフォームは経由していないと思います。 画像認証もCGI側でこの値を調べるようにしていないとほぼ無理だと思います。 そういう対策がしっかり組み込まれているCGIを探して使う事を薦めます。 その画像認証のJavaScriptとCGIを連携させるにしても、CGI側もいじらないと駄目かと思います。