1

JSF2.1.7 アプリケーションがあり、IT セキュリティにより以下の問題が検出されました。

 In Browser:
    1) Get login Page.
    2) Post Login Page with UserName/Password & submit&JSFViewStateId_1&JSessionID_1
    3)Successful login.

古い ViewState と新しい JSession を使用して、以下と同じ http リクエストを行うと、数分以内に.

1) Post Login page with UserName/Password & submit&JSFViewStateId_1&JSessionID_2
   2) Successful Login

2番目のリクエストが行われたときに、古いビューステートがサーバーによってどのように受け入れられるのか疑問に思っています。サーバーは ViewSTate と JSession ID を結合認証として検証しますか。

4

1 に答える 1

0

javax.faces.STATE_SAVING_METHODが に設定されている場合にのみ可能ですclient。は、ユーザー セッションに保存されているビュー ステートを参照する一意のビュー ステート識別子を表すのjavax.faces.ViewStateではなく、シリアル化されたフレーバーでビュー ステート全体を表します。その後、セッション ID は関係なくなります。

テスト中の Web アプリケーションでは、クライアント側の状態保存が有効になっているようです。それがセキュリティ上の問題かどうかは別問題です。XSS ホールがある場合にのみ、ビュー ステートを抽出して悪意のあるサーバーに送信できます。escape="false"JSF 自体には非常に強力な組み込みの XSS 防止機能があり、開発者はユーザー制御データの再表示中に明示的に使用することによってのみ無効にすることができます。XSS ホールがあったとしても、セッション ID を一緒に送信することも可能です。サーバー側の状態保存では、これほど安全ではありませんでした。

于 2012-09-27T00:04:07.770 に答える