8

JavaサーブレットAPIでは、誰かのセッションIDが盗まれないようにするために何が行われますか?

たとえば、私がアクティブなセッションを持っていて、誰かがどういうわけか私のセッションIDを取得した場合、彼らはそれを使用できますか?

4

3 に答える 3

13

それを妨げるものは何もありません。セッションIDを取得すると、セッションに参加できます。

通常のCookieの場合、これ自体はリスクではありません。攻撃者は、次の場合を除いて、ユーザーのセッションCookieを読み取れないようにする必要があります。

  1. それらにはman-in-the-middle機能があり、その場合、セッションIDだけよりもはるかに悪い問題が発生します。

  2. クロスサイトスクリプティングの穴を残しました。この場合、セッションIDだけよりもはるかに深刻な問題が発生します。

  3. DNS再バインド/クロスドメインクッキング攻撃に対して脆弱です。その場合は、正常なHost:リクエストのみを許可することで修正する必要があります。

(セッションをIPアドレスに結び付けることはできますが、ラウンドロビンプロキシなどが原因で有効なセッションが中断するリスクがあります。IPは、疑わしいアクティビティを検出するためのより広範な戦略の一部として使用できますが、パブリックインターネットでは常に良い考えではありません。セッション内の各リクエストが同じIPからのものであることを要求します。)

残念ながら、サーブレットには、Cookieとは別に、jsessionid=パラメータという別のケースがあります。それらはURL自体に表示されるため、リークがはるかに大きくなります(たとえば、リファラーや貼り付けられたリンクを介して)。そして、それはパラメータセッションIDに関する唯一の実際的な問題からはほど遠いです。彼らはナビゲーションを台無しにし、SEOを破壊します。

私の意見では、 jsessionid=URLはサーブレットの初期の最悪の間違いの1つであり、何にも使用されるべきではない、昨年の信用を失ったCookieフォールバック戦略です。ただし、特権データへのアクセスを許可することは許可されるべきではありません。Cookieをサポートしていないブラウザのフォールバックメカニズムが必要な場合は、代わりにHTTP基本認証の使用を検討してください。

サーブレット3.0では、;jsessionid=を使用してURLを簡単に無効にできます。残念ながら、以前のバージョンでは、この機能を適切に無効にしたい場合は、フィルターをいじくり回す必要があります。<session-config>web.xml

于 2010-11-11T00:40:25.243 に答える
9

はい、彼らはそれを使うことができました。すべてのトラフィックをSSL経由にしない限り、それを保護するために何も行われません。

これがFiresheepの仕組みであり、最近、セッションの盗用を容易にするために多くの注目を集めています。

于 2010-11-10T23:43:15.733 に答える
0

はい、セッションIDにより、誰かが対応するセッションにアクセスできます。

ログイン時に使用したIPをセッションに保存し、IPの変更時にユーザーが再度ログインする必要がある場合に保存できます。さらに(それが自動的に行われるかどうかはわかりませんが)、ユーザーエージェントに対して同じことを行うことができます-悪意のある攻撃に対する安全性は実際には向上しませんが、CookieではなくGETを介して渡された場合に誤ってセッションIDを提供する愚かなユーザーに対してです。

于 2010-11-10T23:44:16.493 に答える