サイトのライブユーザーがボタンを押したという自信を高め、キャプチャを削除するにはどうすればよいですか?

キャプチャはすべての人に知られています。 誰もが、それがプログラマーとユーザーの両方にとって大きな問題であることを知っています。 どちらも彼女が好きではありません! 必要に応じて使用する必要があります!



この記事では、問題とその解決方法を分析し、プロジェクトで長年使用してきたプログラミング手法の例を紹介したいと思います。 さらに、この記事を幅広い専門家に読んでもらうために興味深いものにしたいと思います。



最後に提案された方法は議論の余地がありますが、自分で判断してください!



可変フィールド法



submitのようなボタンを持つシンプルなフォームがあります。



これが最も簡単で標準的なオプションです。 フォームに記入し、送信ボタンをクリックすると、フォーム要素が何らかの方法でスクリプトに渡されて処理されます。



スパマーはフィールドへの入力を気にしませんが、すぐに、必要なパラメーターを使用して目的のスクリプトを直接呼び出します。 この場合、ユーザーがボタンをクリックしたのか、スクリプトが直接呼び出されたのかを判断するのは困難です。



闘争の可能な方法


フォーム内のフィールド名には意味がないことが必要です。 名前には「 名前 」、「 」、「 電話 」、「 メール 」などがありませんでした。 ロボットスパマースクリプトは、まさにそれに焦点を当てています。 スパマーロボットを観察した私の経験では、入力方法を知っているフィールドや、空のままにするのが難しいフィールドに入力するか、「Antispam SUXXX」という切り札を挿入します。 テストの長年にわたって、私のテストフォームでntspmフィールドに入力したロボットは1つではありませんでした。 言い換えると、たとえば「login」という名前のフィールドを使用する代わりに、ロボットにとって重要だが理解できないフィールドを1つだけ使用してフォームを作成する場合、「l__in_001」という名前を使用すると、ロボットはこのフィールドに入力できません。 少なくともこの可能性は非常に高いです。



さらに進んで、フィールド名が毎日変わるようにフォームをプログラムできます。 たとえば、「telephone」などの通常のフィールド名を取得し、今日の番号の形式で「指紋」を追加し、結果の行から最も効率的なハッシュとしてmd5ハッシュを取得し、指定した番号のフィールド名として使用できます。



それはすべて一度プログラムされ、絶えず機能し、これはロボットを取り除く本当の方法です。



まあ、正直なところ、自分をスパマーの立場に置いて、この方法を克服する簡単で迅速な方法を見つけることはできません。 現在有効なフィールドを把握し、ロボットコードを変更するには、毎日手動でのみ。



Ajaxボタンメソッド



シンプルなフォーム。 すべては「可変フィールド」のメソッドと同じですが、ajaxによって処理されます。 以前はタイプが送信であったボタンが、ボタンのタイプになりました。 ボタンをクリックすると、JavaScriptスクリプトがトリガーされ、フォーム全体が一度に送信されるか、このフォームの個々のフィールドがサーバーに送信されます。



保護の本質は何ですか? ロボットがJavaScriptスクリプトをアップロードおよび処理する方法を知らないという事実。 ロボットはサーバー動物であり、JavaScriptスクリプトはクライアント動物です。 技術には矛盾があります。 私たちの動物は異なるケージに住んでいます。 そして、この方法は、私のサイトの記事に単一の不発を与えませんでした。 完全に機能し、現在も機能しています。 しかし、ニュアンスがあります。



サイトが非常に人気がある場合、または人気のあるエンジンで作成されている場合、そのようなサイトのスパムは、スパマーにとって非常にシンプルで理解可能なアクションになります。 目的のサイトに手動で1回コメントするだけで、どのバックエンドが起動され、どのパラメーターが渡されるかをデバッガーで確認する必要があります。 次に、ロボットのスクリプトに変更を加えてください。 パラメーターを持つバックエンドは、ajaxと呼ばれるのとまったく同じように呼び出されます。 結果として、ボタンが実際のユーザーによってサイト上でクリックされたという確信はありません。



ただし、「ajaxボタン」メソッドは「可変フィールド」メソッドと組み合わせることができます。これにより、保護が非常に適切な値に確実に強化されます。



「ajaxボタン」メソッドをさらに強化できます。 新しい名前でバックエンドにアクセスできるたびに。 上記のフィールド名の変更が提案されたように、バックエンドの名前は毎日変更できます。 バックエンドの名前を変更する方がおそらく簡単です。 スパムを送信するには、毎日スクリプトを手動で変更する必要があると想像してください。 いいえ、誰もこれを行うとは思いません。



バックエンドへの直接呼び出しを禁止できます。 これは弱い防御ですが、時には機能します。 私は、セッションメカニズムを使用してこの禁止を個人的に実装しました。



「私を入れて」と呼ぶ方法



これは私にとって物議をかもしていると思われる方法です。 私はそれを特定の洗練と審美的な奇妙さと珍しさのために使用します(私の個人的な意見)。 その本質は何ですか?



深くなる前に、少し気を散らしたいです。



リトリートNo. 1


フォームに非表示の入力があると仮定しましょう。 フォームをサーバーに送信する前に、この入力に何かを入力し、この「何か」の存在によって、ロボットを持っているか人を持っているかを判断します。 提案された移動は、「ajaxボタン」メソッドのわずかな修正です。 一番下の行は、ロボットが使用できないクライアントスクリプトを使用することです。 しかし、このフィールドの内容が常に異なる場合にのみ、メソッドがうまく機能することにすぐに気づかされます。 通常のキャプチャはそのように機能しますか?



リトリートNo. 2


パブリックホスティングでサイトを保護する方法に関する以前の記事には、多くのコメントが寄せられました。 それらの一部は、誰かが本当にそれを必要とする場合は常にハッキングされるため、ハッキングと戦うことは不可能であるというライトモチーフを持っていました。 私はこの結論に同意しますが、戦う必要がないことに同意しません! まったく同じleitmotifが車のアラームフォーラムに存在します。 状況は非常に似ています。 脆弱性の本質は、キーフォブボタンを押すこと、コードが着色された窓のある隣の車からの受信機によってインターセプトされること、それによって飲み込まれること、セキュリティコードが置き換えられること、そしてあなたの車が他人のコードで武装することです! それだけです! アラームの価格は価値がありません! それから、車のアラームの分野の同僚は、問題を解決するために次の方法を思いつきました。 しかし、キーフォブが「 このコードで武装 」コマンドではなく、「 このようなコードで武装 できますか? 」という質問ではなく、車に送信するとどうなりますか?このコードで武装し、検証のために送り返しています。」 キーフォブは、送信、返送されたコードの一致を検証し、一致した場合、マシンは他の誰かのコードではなく、あなたのコードを監視します。 問題は解決しました。 そして、それらが一致しない場合は、リクエストを繰り返すだけです。 運転手はこれさえ知りません。



同様の方法でキャプチャの問題を解決できますか?



やってみた!



フォームの拡大アルゴリズム




弱点はありますか? はい、あります。 スパマーは、コードリクエストを送信するプログラムを作成し、パッケージ内のこのコードを置き換えることができます。 しかし、それはあなたのサイトに特化した個々のロボットであり、シンプルなサイト、オンラインストア、そしてまともなオンラインストアでさえ、誰もそのようなプログラムを書くことはないだろうということがわかります。 やめて! そして、この方法と以前の方法の増幅器を組み合わせれば、ロボットの認識度を非常に高い割合にすることができます。 私はこのように空に指を突くのが怖いですが、98.5パーセントを与えます。 スパム発信者にとって非常に多くの問題があるからといって、正直なところ、生きている人にとっては、ペンですべてのものを送りやすくなります。 もちろん、生きている人の場合のキャプチャは役に立ちません。



まとめ



あなたはキャプチャを取り除くことができるように思えます! したがって、ユーザーの生活を少し楽にすると同時に、サイトのコンバージョンを増やすことができます。



勤務中、私はよくYandexのWord Selectionサービスに行きます。 現在、すべてのリクエストに対してキャプチャがあります。 これがユーザーの作業を遅くする方法である場合(「 もう一度考えてください!この情報は本当に必要ないかもしれませんか? 」)、それは理解できます。 しかし、これがロボットに対する真の保護である場合、「続行」という通常のボタンを配置し、上記の方法のいずれかをアンプで使用してみませんか?



インターネットをもう少し便利にしましょう!



参照資料



私のスパムコレクター 。 このサイトは人向けではありません! その設計は、これを実証するように設計されています。 (リンク「広告の追加」により)アンプなしで「入力を許可」メソッドを実装します。 長年の間、単一の「フライト」はそうではありませんでした。 しかし、公平を期して、アンプなしの「Ajaxボタン」メソッドには「スパン」がなかったことを明確にしたいと思います。 はい、そしてロボットはいつも同じように私を訪問します、そして、それらはすべてフリルなしです、それは残念です。



All Articles