私は、JSを使ってチェックボックスを設定する必要があるフォーム(つまりhttp://uxmovement.com/forms/captchas-vs-spambots-why-the-checkbox-captcha-wins/)でボットを抑えることができます。この戦略は効果的ですか?ユーザーは物理的にボックスをチェックする必要がありますか、またはクライアント側のJSを使用してそれをチェックすることはできますか?JavaScriptを使用したスパムとボットの防止チェックボックス
答えて
記事は私にとって怪しいようです。 チェックボックスのcaptchaは、盲目的にフォームに記入するスパムボットに対する適切な防御のようですが、あなたのページに何らかの洞察を持つボットを書くと、そこ。
最終的に重要なのはHTTP投稿です。サーバーがPOSTを確認できる場合は、POSTの作成方法やクライアントで実行されたスクリプトは関係ありません。サーバがに等しい値を持つNotABot
というPOST値を探している場合、スパムボットはクライアント側スクリプトでチェックボックスが作成されているかどうかをサーバが知らないため、この値をPOSTに単純に含めることができます。値が最初のHTMLで提供されたランダム値と等しくなければならない場合、スパムロボットはその値もスクレイプできます。値がイメージに指定された値と一致する必要がある場合は、基本的にCAPTCHAが作成されています。
最終的には、スパムのリスク許容度とユーザビリティの欲求に依存するコスト/便益分析です。小さなWebサイトを実行すると、おそらくすべての投稿が許可される前に人間によって管理される可能性があります。おそらく、ユーザビリティの低下を保証するために十分なスパムを取得しないでしょう。数百万人が使用している巨大なサイトを運営しているのであれば、ボットを避けるためのより積極的な対策が必要かもしれません。それは本当にあなたの作ることです。
控えめなアプローチの最善の策は難読化です。つまり、攻撃の機会がないと仮定すると、悪意のあるスパミング会社が、あなたのサイトのボットを書く方法を理解するために誰かを雇う(何百万人ものユーザーにサービスを提供しない限り、時間の99%は起こらない)ので、あなたのサイトのフードの下で何が起こっているのかを理解することは、困難で、できるだけ多くの時間を無駄にします。
私は自分のサイトのゲストコメントにボットを持っていましたので、船に乗ることに決めました。 (Javascriptのは、私のサイト上で必要とされる。それが無効になっusualyボットやWeb開発者です持っている人々の非常に小さな割合)私は、フォームタグを使用し、常にCSS-隠されたダミーの乱数を持っていない
- 実際の送信ボタンと混合された送信ボタン。
- 送信はJavascript/ajaxなので、これは未だに特定されていないボットを除外しています。 私はCSS(input type = "hidden"ではない)によって隠されたテキスト入力をいくつか作成し、 "email"や他のキーワードのように適切に名前を付けます。
- これらが記入されてサーバーに送信された場合、私はそれがボットだと推測できます。
- Botは、特定のフィールドに入力するだけで理解する必要があります。
- 私のサーバーとのインターフェイスでは、クライアントがスクランブルした隠しキャプチャコード(ユーザーには見えません)が必要です。
- サーバーはランダムなキャプチャ文字列をクライアントに渡します。
- クライアントは、日付、コメントの長さ、およびDOMの一部の文字列のラスタライズに基づいてキャプチャをスクランブルし、スクランブルされたキャプチャを検証のためにサーバーに戻すJavascript関数を使用します。
- サーバーは同じ機能を実装しています。
- ハッカーはこのJavascript機能を盗んだり、そうでなければ参照することができます。そのため、ユーザーのセッションに応じてランダム化されたURLでスワップアウトされ参照されるスクランブリング機能が10種類ほどあります。
- 空のユーザーエージェント文字列を持つクライアントは、コメントを追加したり、サイトを更新したりすることはできません。
- ウェブサイトでは、ボットからの疑いのあるコメントは表示されず、代わりに数時間でコメントなどが表示されるというメッセージが表示されます。
- 私のJavascriptのソースコードを見ている人が好きなことのもう一つは、jsfuck.comメソッドを使用してその一部を難読化することです。彼らはそれが何であるかを知っていれば誰も止めることはありませんが、難読化されたコードを見たときに顔を見ることが好きです。
- テキスト入力/キー入力がkeydownイベントが発生したかどうかを確認するためにチェックされます。
- これですべての人が人を雇ってあなたのウェブサイトにアクセスして迷惑をかけてしまうのを止めません。したがって、完全にコピーされてテキストエリアに貼り付けられたコメントは疑わしいとマークされ、表示される前にレビュー用にフラグが立てられます。
- そのIPを持つユーザーからの次の1時間以内のすべてのコメントにもレビュー用のフラグが付けられ、すぐには表示されません。
- コメントは1つ以上のリンクのコメントに付けられます。ほとんどのボットは、これまで多くのサイトでこの制限を認識しており、リンクを貪欲にしていません。
- 1. PHPフォームフィールド(表示:なし)スパム防止
- 2. CSRFフォームトークンの使用は、スパム防止に役立ちますか?
- 3. 私のフォームからのスパムの防止
- 4. ランダムメールからのスパムの防止
- 5. Angular2 - 防止チェックボックス
- 6. 火災防止対策スパム対策
- 7. JavaScriptを使用したFirefoxでの自動検索の防止
- 8. make_sharedを使用したコピーコンストラクションの防止
- 9. codeigniterでphpとmysqlを使用した重複エントリの防止
- 10. チェックボックスのチェック/非チェックを防止する
- 11. JavaScriptを使用したポストバックを防ぐ
- 12. PHP電子メールの「from」ヘッダーフィールドのベストプラクティスとして、スパムとしてのマーキングを防止する
- 13. パディングを使用した誤った共有の防止
- 14. 変更されたjarを使用したJavaアプリケーションの防止
- 15. JavascriptとXSS攻撃の防止
- 16. 配列とJavaScriptを使用した限定チェックボックスの選択
- 17. PHPウェブ連絡フォームのスパムを防ぐ
- 18. MediaWikiがスパムされるのを防ぐ
- 19. jQueryを使用したajaxロードページでのスクリプト実行の防止
- 20. jQueryを使用したHTMLテキストボックスの入力スペースの防止
- 21. Artifactoryを使用したデプロイメントの上書きの防止
- 22. instantiateViewControllerを使用しているときのメモリリークの防止
- 23. Graphics.Drawstring()を使用しているときのカラーブリードの防止?
- 24. JQueryを使用した重複データの防止
- 25. CoreLocationを使用した散発的な座標の防止
- 26. laravelを使用した複数ログインの防止
- 27. 新しく登録されたユーザからのスパムを防止する、JIRAの問題バリデーターを作成
- 28. ボットが動的javascriptファイルをクロールするのを防ぐ
- 29. 剣道ドロップダウンリストの折りたたみを防止する方法Javascriptを使用したページスクロール
- 30. 準備文を使用したトラブル防止型
ありがとうございましたMike、どのようなページが読み込まれ、ランダム値で隠された入力が含まれていますか?JSは隠された入力の値をサーバーに送るためにajaxを開始し、最初の値のハッシュ隠れた入力(または最初の隠れた入力は必要ないかもしれませんが、セッションに格納されていますか?)。フォーム提出時に、サーバーは正しい値をチェックしますか? – user1032531
すべてが難読化によるセキュリティです。スクリプトは*それでもすべて自動的に*書くことができます。あなたが投稿した記事のコメントを読む、それらの多くは非常に洞察力があります。コンセンサスは、これらの技術が特定のタイプのスパムを最小限に抑えることができると思われますが、すべてのスパムを排除することはできません。 –
@ user1032531この記事をチェックしてください:http://www.sitepoint.com/captcha-problems-alternatives/彼らは非対話型ソリューションについて語ります。そして、正直なところ、最も効果的で、最も目障りなデザインのようです。しかし、Mikeが指摘したように、それはあなたのアプリケーションと要件に大きく依存しています。 –