2

特に、自動化されたリクエストが一般的なブラウザのいずれかからXMLHttpRequestを介して実行されている場合は、JavaScriptを介して自動化されないように、アプリケーションに障害物を追加したいと思います。

ASP.NETで使用できるXMLHttpRequestの信頼できるわかりやすいサインはありますか?

そして、他の関連する質問は、XMLHttpRequestが通常の人間主導のリクエストのように見えるのは難しいですか?もしそうなら、私は愚か者の用事をしていると思います。

更新:質問の言い回しが狭すぎる可能性があります。目標は、次のことを検出することです。通常のブラウザによって送信されていない、他の誰かによって作成されたコード、ボットである可能性、イントラネットの顧客からのものではない可能性など。これまでのところ、XHRおよび.NETWebRequestリクエストが思い浮かびます。

4

6 に答える 6

4

いいえ、これを行う方法はありません。jqueryのような人気のあるライブラリの多くは、それがajax呼び出しであることを示すために、特別なヘッダー(jqueryの場合は "x-requested-with")を配置しますが、これは明らかにクライアント側の自発的なものです。

残念ながら、受け取ったリクエストは悪意のあるものである可能性があると想定する必要があります

于 2009-06-30T18:00:09.510 に答える
4

いつでもCAPTCHAを使用して、人間がリクエストを送信する責任があることを確認できます。recaptcha.netは無料で、本のデジタル化に役立ちます。

編集:

防止しようとしている悪意のある動作の種類がわかっている場合は、その動作を検出するための簡単なアルゴリズムを開発できます。その動作が検出されたら、CAPTCHAを使用してクライアントにチャレンジし、人間が責任を負うようにすることができます。このアプローチは一般的な慣行になり始めています。このトピックに関するこの投稿をご覧ください。

于 2009-06-30T18:20:42.690 に答える
1

リクエストが偽造されているかどうかを確認する方法はありません。.NET HttpWebRequestクラスを使用すると、ブラウザからの有効なHTTPリクエストを完全に模倣できます。ただし、アプリケーションに応じて、次のいずれかを検討できます。

  • 最も露骨な試みを見つけるためにHTTPヘッダーを見てください
  • 短期間に同じIPアドレスからのリクエストが多すぎるのを防ぎます
  • ログインが必要
  • 特定のIPアドレス範囲のみを許可する
  • CAPTCHA
  • 送信する前にJavascriptコードを実行して、.NET HttpWebRequestを使用したハッキン​​グを困難にします(Mark Ba​​rnardの回答を参照)。

なぜ人々がこれをやろうとするのかを見つけ、それを彼らにとって非常に不便にする方法を見つけなければなりません。おそらく、検証手順を簡単に変更できるような方法で、常に検証手順を維持する必要があります。

于 2009-07-18T13:18:58.163 に答える
1

CSRF / XSRF保護に使用されるものとは異なり、リクエストチャレンジトークンを使用して戦略を実装できます。別の可能な代替手段は認証を使用することかもしれませんが、あなたが公開ウェブサイトを持っているなら、これはあまり友好的ではないかもしれません。

于 2009-07-18T21:49:47.867 に答える
1

あなたはいくつかの卑劣なことを実行することができますが、残念ながらそれはすべての人を思いとどまらせることはありません。たとえば、ページの読み込み時に実行される開始/ログインページにJavaScriptを配置できます。このJavaScriptはリダイレクトを引き起こし、サーバーに送り返される暗号化されたCookie値を書き込む可能性があります。XMLHttpRequest(またはその他)を使用すると、明らかにコンテンツが返され、JavaScriptは実行されません。したがって、スクリプトで設定されたCookie値がないため、これらのリクエストを除外できます。JavaScriptで難読化を実行すると、さらに良いでしょう。

于 2009-07-17T13:38:55.537 に答える
0

私の知る限り、XMLHttpRequestのすべての実装はリクエストにヘッダーを追加します。

編集:

申し訳ありませんが、ヘッダー(少なくともPHPでは)は「HTTP_X_REQUESTED_WITH」です

于 2009-06-30T18:00:09.727 に答える