0

これで基本的な PHP フォームのハニーポットができました。のように見えます..

$honeypot = $_POST['honeypot'];    
if($honeypot)
     $error = "You are a bot";
else{   

入力ハニーポットは display:hidden です。技術的には機能し、1 年以上機能していますが、つい最近、スパム ボットが機能し始めました。私の推測では、ボットはそれが隠しフィールドであるという事実に気付いており、これを行う方法が他にもいくつかあることを知っています。フィールドを見えるようにすることはできますが、背景と同じ色で、ページの外に配置できます。しかし、私は何が最も効果的かについて他の人々の経験についていくつかの情報を得たいと思っていました.

ありがとう。

4

4 に答える 4

5

JavaScript を使用してフィールドを完全に削除することで、同じ効果を得ることができます。

あなたが何をしても、それはすべてボットによって打ち負かされる可能性があります. これは、誰かが自分のボットをフォームに合わせて手動で 5 分間調整している場合に特に当てはまります。また、「実際の」ユーザーと同じように JavaScript を実行する完全な Webkit ブラウザー インスタンスを実行するボットがますます増えています。

于 2012-11-09T21:22:16.210 に答える
1

を使用する代わりに、 のdisplay: hiddenようなものを使用して入力を非表示にするかposition: absolute; top: 100%、境界線を削除して背景にブレンドすることもできます。honeypotは既知の用語であるため、名前を から変更することも検討します。

一部の洗練されたボットはおそらくそれを回避できますが、それは基本的にすべての場合に当てはまります. スパムを受け取らないようにすることが重要な場合は、キャプチャを使用できます (私はキャプチャが嫌いで、ユーザーにはお勧めしません。私の意見では、キャプチャはあまりにも煩わしいものです)。ただし、一部のボットはキャプチャを無効にすることさえできます。たくさんの投稿がある場合は、多少のスパムを許容する必要があるかもしれません。

于 2012-11-09T21:27:24.573 に答える
0

ロボットが使用することを示すラベルを付けて、フィールドを完全に見えるようにしてみてください。残念ながら、これは実際のユーザーにとってはやや不便です。私はまだこれを試す理由がありませんでした。エラーは、「ありがとうございますが、ロボットの入力は許可されていません」のようなものになる可能性があります (素敵な「ありがとう」に注意してください ;-)

于 2013-08-26T21:37:57.347 に答える
-1

キャプチャが最適です (私は嫌いですが)。

これが単なるお問い合わせフォームである場合は、 を使用してみてください$_POST['password'];。ボットはこれを通常の有効なフィールドとして検出し、入力します。ハニーポットはあまりにも明白です。

于 2012-11-09T21:22:41.310 に答える