0

ページを要求しているJavaアプリケーションがあり、それをブロックしたいと思います。

これを行う方法の1つは、セッションまたはCookieを使用することでしたが、JavaURLメソッドがそれらを処理できるかどうかはわかりませんでした。

セッションまたはCookieを使用する以外に、このJavaアプリケーションからの要求を区別してブロックできる別の方法はありますか?一意のJavaユーザーエージェントヘッダーがあることは知っていますが、もっと正確にしたいと思います。

4

2 に答える 2

2

URLは、話しかけようとしているサーバーを表すだけです。接続を開くなどの便利な方法がいくつかありますが、それだけです。

セッションは、CookieまたはURL書き換えの2つの方法のいずれかで処理されます。これらは、URLクラスとはほとんどまたはまったく関係がありません(後者のURLに配置されるセッションIDを除く)。

パスワード(http基本、ダイジェストなど)またはSSL証明書の検証を有効にする以外は、ユーザーエージェントが最善の策のようです。そうは言っても、ユーザーエージェントはクライアント側の裁量で完全であり、他のブラウザになりすますためにクライアントによって簡単に変更できます。

于 2012-08-01T02:20:57.827 に答える
2

見出しの質問に対する答えは、URL.openXxxメソッドがCookieを理解しないということです。

(サーバーが要求URL自体でセッショントークンを受け入れるように構成されている場合、URL.openXxxメソッドは邪魔になりません。ただし、そのアプローチは安全ではありません。)

次に、あなたの質問の本文に行きます。

...セッションまたはCookieを使用する以外に、このJavaアプリからのリクエストを区別してブロックできる別の方法はありますか?

この時点で、サーバー側でリクエストをブロックすることについて話していると思います。そして、「悪者」クライアントがリクエストを送信するために使用するものは、今では重要ではないことを指摘する必要があります。(URLまたはApache HTTPComponentsを使用することも、アセンブリコードにHTTPプロトコルスタックを実装することもできます!)

したがって、本当の問題は、不要な要求をブロックするためのオプションが何であるかということです。そして答えは:

  • リクエストURL自体に基づいてブロックすることもできますが、これはおそらく逆効果です。
  • リクエストヘッダー内のセッション(または他の)Cookieの存在に基づいてブロックできます。これはアクセス制御を行う通常の方法であり、Cookieを安全に発行して処理することを前提とすると、これを打ち負かすことは困難です。
  • セッショントークンをリクエストURLで渡すように要求することもできますが、これには基本的なセキュリティの問題があります。
  • user-agentヘッダーなど、他の「有益な」ヘッダーに頼ることもできますが、これを無効にするのは簡単です。
  • リクエストの送信元IPアドレスに基づいてブロックすることもできますが、悪意のあるユーザーが行う必要があるのは、別のIPアドレスからリクエストを送信することだけです。
  • クライアント側の証明書でHTTPoverSSL / TLSを使用してアクセスを制限することもできますが、これは、すべての正当なクライアントホストの証明書を管理する必要があることを意味し、ほとんどの環境で問題があります。

要約すると、Cookieが最善のソリューションであるため、「善良な」クライアントアプリケーションは、Cookieの管理と要求でのCookieの設定が可能なライブラリを使用する必要があります。

于 2012-08-01T03:09:25.950 に答える