14

XSS (クロス サイト スクリプティング) の問題に取り組んでいます。私のアプリケーションは、Oracle Weblogic ポータルで実行されます。サーブレット バージョン 2.5 を使用します。

httponly およびセキュア Cookie を設定するためのフィルターに以下の 3 行のコードを追加しましたが、正常に動作しています。

String sessionid = req.getSession().getId();
res.setHeader("Set-Cookie", "JSESSIONID=" +  sessionid + ";HttpOnly");
res.setHeader("SET-COOKIE", "JSESSIONID=" + sessionid + "; secure");

問題は、同じブラウザでログアウトしてすぐにログインしたときです。ログインできますが、その後、jsp ページでセッション タイムアウトの問題が発生します。weblogic関連のAPIを使用しています。request.getuserprinical()APIはnullを返しています..nullに設定していると思います。

アイデアを共有してください。

httponly または secure フラグを設定する他の方法がある場合は、助けてください。

4

3 に答える 3

20

Web コンテナーの仕様によっては、アプリ内でコンテナー管理のセッション Cookie を変更すると、アプリ サーバーが既存のセッションを破棄して新しいセッションを作成する可能性があります。Tomcat でこれを確認しましたが、Weblogic の場合も同様である可能性があります。

サーブレット 3.0 を使用している場合は、次のフラグメントを使用して、すべてのセッション Cookie が HttpOnly および Secure であることを確認するようにアプリ サーバーに実際に指示できます。

<session-config>
  <cookie-config>
    <secure>true</secure>
    <http-only>true</http-only>
  </cookie-config>
</session-config>

これは、フィルターを使用して Cookie を手動でハッキングするよりも優れた方法です。

参考までに: 私は、サーブレット ベースのアプリに多数のセキュリティ関連の応答ヘッダーを挿入するJava ライブラリも作成しました。

于 2013-07-16T23:19:38.820 に答える