ロボットが情報を入力しているかどうかを確認する方法

StackOverflow https://stackoverflow.com/questions/1239283

  •  11-09-2019
  •  | 
  •  

質問

ユーザーが入力し、情報がサーバーに送信され、データベースに保存されているWebフォームがあります。ロボットがフォームに記入するだけで、役に立たないレコードでいっぱいのデータベースになってしまうのではないかと心配しています。ロボットが自分のフォームに記入するのを防ぐにはどうすればよいですか? Stackoverflowのロボット検出のようなものだと思っています。あなたがロボットだと思うなら、あなたがそうでないことを確認するように頼みます。 Perl、Java、またはPHPにサーバー側のAPIはありますか?

役に立ちましたか?

解決

いくつかの解決策があります。

  1. キャプチャを使用します。だから使用します Recaptcha 私の知る限りでは。

  2. フォームに追加のフィールドを追加し、CSSで非表示にします(表示:なし)。通常のユーザーはこのフィールドが表示されないため、埋めることもありません。このフィールドが空であるかどうかを提出時に確認してください。そうでない場合は、すべてのフォームフィールドに注意深く記入したロボットを扱っています。この手法は通常、「ハニーポット」と呼ばれます。

  3. JavaScriptタイマー関数を追加します。ページロードでは、ゼロで値を起動し、時間が経過すると増加します。通常のユーザーは、しばらくの間フォームを読み取り、記入し、その後送信します。ロボットは、フォームを受け取ったらすぐに記入して送信します。提出時に値がゼロから大きくなったかどうかを確認します。もしそうなら、それはおそらく本当のユーザーです。数秒(またはJavaScriptを実行していないロボットのために値がまったくない)が表示されている場合は、おそらくロボットです。ただし、これは、ユーザーが「書き込み」操作を実行するためにJavaScriptを使用する必要があると判断した場合にのみ機能します。

確かに他のテクニックがあります。しかし、これらは非常にシンプルで効果的です。

他のヒント

使用できます Recaptcha (StackOverFlowと同じ) - 彼らは持っています ライブラリ 多くのプログラミング言語の場合。

私はいつもハニーポットのキャプチャを好んでいます(Phil Haackによる記事)、ユーザーへの侵襲性が低い。

Captchasはアクセシビリティの問題をもたらし、最終的にソフトウェアの認識によって打ち負かされます。

これを読むことをお勧めします 短い記事 マシュー・ヴァインズと町の新しいものがすでに示唆しているように、隠された畑を含むボットトラップについて。

とにかく、あなたはまだキャプチャとボットトラップの両方を自由に使用できます。

キャプチャは素晴らしいです。あなたができるもう1つのことは、あなたのロボットのトラフィックの99%を防止しますが、ユーザーがフィールドを検証することを困らせることはありません。

私のサイトでは、郵便番号や電話番号などのフィールドでテキストをチェックします。これにより、非標的ロボットの誤った情報がすべて削除されました。

ユーザーがフォームに記入する2段階のシステムを作成できますが、電子メールに返信して、設定期間内にレコードを「アクティブ化」する必要があります。

バックエンドでは、現在のテーブルにすべてのフォームの提出物を入力する代わりに、時間の割り当てよりも古い行を自動的に削除する一時テーブルにそれらを配置できます。深刻なボットの問題がない限り、特に最初のフォームがいくつかのフィールドである場合、テーブルはそれほど大きくならないと思います。

このアプローチのベニフィットは、キャプチャやそのような他のテクノロジーを使用する必要がないことです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top