web-dev-qa-db-ja.com

フォームスパマーを捕まえるための「核」ハニーポットを作成する方法

登録フォームの現在のハニーポットは、position: fixed;を使用して画面外に配置される電話番号のエントリです。

それは標準的な品種フォームフィラーをだましましたが、私ほどうまく機能しません。また、スパムボットはフォームの変更に即座に応答しました。つまり、これは自動的に行われます。どうすればよいですか。

注:ユーザーに問題を解決させる私の問題は決して良くないので、私はキャプチャが嫌いです。

19
GiantCowFilms

本当にスマートなハニーポットを構築する

それは明白に思えるかもしれませんが、ここにいくつかのトリックがあります(詳細は後で):

  1. スパムボットのように考える
  2. 画面上または他の要素の背後にあるものを彼らが知ることができると仮定します
  3. 複数のトラップがあります。
    • タイムトラップ
    • ハニーポット

1.スパムボットのように考えます。

スパムボットのようにページを読み始めてください。時間を無駄にすることはできますが、とても楽しい独自のページを作成することもできます:)。ほとんどのスパムボットは、マークアップをクロールして<form>要素を探します。次に、入力内容を確認して適切に入力します。これがキャッチです。入力内容をどのように知るかです。おそらく、ID、クラス、プレースホルダー、ラベルを確認します。これが私たちの最初の方法につながります

方法#1:

フォームコードのラベル入力がありません。基本的に、ユーザー名の入力には#Form_EmailブームのIDが必要です。スパムボットがフォームに正しく入力しません。また、入力ラベルを非表示にして誤ったラベルを付け、代わりにdivを使用します。*

方法2はここから始まります

隠されたものを単に無視すると、その前にある場所や古き良きdisplay: none;visibility: hidden;opacity: 0;またはtype='hidden'に基づいて、おそらくお気づきでしょう。 。これは私たちに強力な武器を与えます。タイムトラップのテスト中に偶然これを発見しました。基本的なフォームフィラーを使用してフォームに入力しました。私のサイト(GiantCowFilms.comについては話していません)では、登録フォームは、ユーザーが登録ボタンをクリックすると開くダイアログにあります。デフォルトではhiddenです。これは私にアイデアを与えました

方法#2

デフォルト:フォームは非表示です。基本的に、フォームはページの読み込み時に非表示になりますが、一部のマウスベースのアクション(ボットにはマウスがないと思います)。ページの読み込み時にフォームを表示したくない場合は、マークアップで実際のフォームの上にある同一のおとりを追加します。ボットが入力して送信する場合は、IPを数分間ブロックします。**実際のユーザーは、マウスがおとりのフォームにカーソルを合わせると、ユーザーを切り替えます。

2.彼らがあなたのページがどのように見えるかを知っていると仮定します

CSSでハニーポットを隠すのが完璧だと仮定するのは重大な間違いです。彼らは、スパムのために再利用される可能性のあるJAWSのような多くの超スマートスクリーンリーダーです。そのため、複数の防衛線があります。

3.複数のトラップがあります

  • タイムトラップ:ボットのように考えることに戻って、他の人を攻撃するのではなく、サイトで待ちたくないですか? 方法#3:タイムトラップを作成します。最良の方法は、ページが読み込まれたときに非表示の入力に時間を印刷することです。フォームを送信すると、所要時間が表示されます。できるだけ早くフォームに記入してください。それはあなたのために満たすための最小時間でなければなりません。注:ボットがそれを変更できないようにあなたのタイムスタンプを暗号化してください。

    本当に気になりたくない場合は、ボット入力のWPM)を測定します。これはスタック交換で行われます(コピーして貼り付けてから送信して質問/回答してください) 。また、タイピングの速度がvery一貫している場合、それは危険信号です。

  • ハニーポット(方法#4):最良の結果を得るには、上記のすべてを一度に使用します。スマートボットだけでなく、ダムボットもだましてください(ボットが常に懸命に努力していると思い込まないでください)。

さて、私たちをスパムするために、ボットはカーソルを持ち、ページをレンダリングし、待機し、可変の現実的な速度で入力する必要があります。彼らがそのようなボットを作った場合、それはキャプチャ時間になると思います:(。

*スクリーンリーダーを使用している人は、これらの防御策をトリガーしたり混乱させたりします。国によっては、視覚障害者と半視覚障害者を区別するのに問題が発生する可能性があります。人。そのため、ユーザーがボットテストをトリガーすると、 reCaptcha のような障害者に優しいキャプチャを含むロードされていないフォームにユーザーを移動します。

**人々はIpsを共有することが多く、有効なユーザーを追い払うことができます。

P.S.あなたがすでに持っているような単純なハニーポットを使用してください。一部のボットは、私たちがここに持っているものにだまされるにはあまりにも愚かです。

37
GiantCowFilms

何年もの間、私はスパムボットをブロックするためにさまざまな技術を使用する独自の「フォームスパマートラップ」を使用してきました。最も効果的なのは、フィールド(特にフォームの「アクション」)を短期間隠すことです。ボットはフォームと「アクション」ページをスクレイプし、その情報を使用してフォームデータを「CURL」するため、これらの領域に誤った情報を入力すると、ほぼすべてのスパムボットがだまされます。

タイムアウト後(JSベース)、隠された値は実際の値に置き換えられます。その時までに、スパムボットは別のターゲットに移動しており、偽の値の使用は失敗します。

このプロセス全体を、「Form SpammerTrap」サイトで利用できる無料のソリューションに発展させました https://www.FormSpammerTrap.com 。そのサイトは何年も前から存在しており、そこにあるお問い合わせフォームはまだ「スパムボット」に成功していません。 (ボットは大歓迎です。)

サイトに実装するには、1つの「include」関数と3つの関数を追加します。また、いくつかの高度なテクニックを使用してフォームをカスタマイズできます。

スパムボットのしくみや、隠しフィールドなどの一般的な「トリック」が機能しない理由に関心のある方は、こちらをご覧ください: https://www.securitydawg.com/how-bots-spam-contact -forms /

私の「FormSpammerTrap」ソリューションは無料(PHPベース)で、お問い合わせフォームから入手できます(チェックボックスをオンにするだけで無料のコードを入手できます)。義務はありません。私はあなたのメールアドレスさえ保存しません。

しかし、それは非常に効果的です。私見では。

0
Rick Hellewell