[解決済み] ロボットが自動的にフォームに入力するのを防ぐには?
質問
自動生成された入力を防ぐために、十分なアンチスパムメカニズムを考え出そうとしています。captcha、1+1=? のような技術はうまく機能すると読みましたが、それらはまた、アプリケーションの自由で迅速な使用を妨げる余分なステップを提示します (私はそのようなものを探していません。).
私はすべてのフォームにいくつかの隠しフィールドを設定しようとしました。
display: none;
しかし、スクリプトがそのフォームフィールド ID を追跡し、単にそれを記入しないように設定できることは確かです。
自動フォーム入力ロボットを防止する良い方法を実装していますか/知っていますか? HTML および/またはサーバー サイドの処理でシームレスに行うことができ、(ほぼ) 防弾となるようなものはありますか? (JSがなくても、単に無効にすることができるので)。
私は、このためにセッションに依存しないようにしようとしています(たとえば、過負荷を防ぐためにボタンが何回クリックされたかをカウントします)。
どのように解決するのですか?
簡単に実装できるが確実ではない (特に特定の攻撃について) スパム対策の方法は、フォーム送信とページ読み込みの間の時間を追跡することです。
ボットはページを要求し、ページを解析し、フォームを送信します。これは高速です。
人間がURLを入力し、ページを読み込み、ページが完全に読み込まれる前に待ち、スクロールダウンし、コンテンツを読み、コメント/フォームに記入するかどうかを決定し、フォームに記入する時間を必要とし、そして送信します。
時間の差は微妙で、Cookie なしでこの時間を追跡するには、サーバー側データベースの何らかの方法が必要です。これは、パフォーマンスに影響を与える可能性があります。
また、閾値の時間を調整する必要があります。
関連
-
[解決済み] JSFでフォームアクションを定義する方法は?
-
[解決済み] Webフォームのフィールド/入力タグでブラウザのオートコンプリートを無効にするにはどうすればよいですか?
-
[解決済み] ユーザーがEnterキーを押してフォームを送信できないようにする
-
[解決済み] JavaScript/jQueryでフォームデータを取得するには?
-
[解決済み] Enterキーが押されたときにフォームを送信しないようにする
-
[解決済み】フォームが送信されないようにするには?
-
[解決済み】GETメソッドとPOSTメソッドはいつ使うべきですか?両者の違いは何ですか?
-
[解決済み】Chromeの開発ツールのネットワークタブに表示される「リクエストペイロード」と「フォームデータ」の違いとは?
-
[解決済み] 送信」ボタンを無効にするには?
-
[解決済み] カピバラを使って、フォームのフィールドが正しくプリフィルドされているかどうかを確認するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Angular 2: formGroup は FormGroup のインスタンスを期待します。1つを渡してください。
-
[解決済み] 電子メールアドレスに使用できる文字は何ですか?
-
[解決済み] tabindexからHTML要素を無視するには?
-
[解決済み】GETメソッドとPOSTメソッドはいつ使うべきですか?両者の違いは何ですか?
-
[解決済み】チェックしたラジオボタンのラベルをCSSセレクタで指定する方法
-
[解決済み] AngularJSでフォームの入力を条件付きで要求するにはどうすればよいですか?
-
[解決済み】curlを使用してmultipart/form-dataをPOSTする正しい方法は何ですか?
-
[解決済み】Chromeの開発ツールのネットワークタブに表示される「リクエストペイロード」と「フォームデータ」の違いとは?
-
[解決済み] AngularJSでフォームが無効なときに送信ボタンを無効にする
-
[解決済み] Razorで "Html.BeginForm "を記述する方法