1

スレッドで見たtomcat / Java webapps で HttpOnly Cookie を設定するにはどうすればよいですか? Tomcat 5.5.(>28) は、要素で指定されたベンダー固有のuseHttpOnly属性をサポートするはずです。<Context>

この属性を、server.xml で構成されたすべてのコンテキストに追加しました。

ただし、 のみフラグJSESSIONIDが追加されました。"; httpOnly"他のすべての Cookie は、追加する前とまったく同じuseHttpOnly="true"です。

Set-Cookie=
JSESSIONID=25E8F...; Path=/custompath; HttpOnly
mycustomcookie1=xxxxxxx; Path=/
mycustomcookie2=1351101062602; Path=/
mycustomcookie3=0; Path=/
mycustomcookie4=1; Path=/; Secure
mycustomcookie5=4000; Expires=Sat, 22-Oct-2022 17:51:02 GMT; Path=/

他に変更する必要があるものはありますか?

(Tomcat 6 または 7 へのアップグレードは、現時点ではオプションではありません。当社のシステムは、Tomcat 5.5 に基づくサードパーティのフレームワークを使用しています)

4

1 に答える 1

1

サーバーのuseHttpOnly構成は、実際にはサーバー制御の CookieJSESSIONIDのみに適用されます。

webapp 制御の Cookie の場合、Cookie ヘッダー全体を自分で手動で作成する必要があります。このメソッドは Servlet 3.0 で導入さCookieれたため、このクラスは不適切ですが、Tomcat 5.5 を使用している場合は、Servlet 2.4 コンテナーとしてクラスsetHttpOnly()にこのメソッドがありません。Cookie少なくとも Servlet 3.0 互換のコンテナーである Tomcat 7 にアップグレードする必要があります。

次のように、質問で言及されている Cookie を手動で作成できます。

response.addHeader("Set-Cookie", "mycustomcookie1=xxxxxxx; Path=/; HttpOnly");
response.addHeader("Set-Cookie", "mycustomcookie2=1351101062602; Path=/; HttpOnly");
response.addHeader("Set-Cookie", "mycustomcookie3=0; Path=/; HttpOnly");
response.addHeader("Set-Cookie", "mycustomcookie4=1; Path=/; Secure; HttpOnly");
response.addHeader("Set-Cookie", "mycustomcookie5=4000; Expires=Sat, 22-Oct-2022 17:51:02 GMT; Path=/; HttpOnly");

HttpOnly.で区切られた Cookie ヘッダー値に属性を追加するだけ;です。

これをすべてのCookieに透過的に適用する場合は、ヘッダーが設定されているかどうかを確認するHttpServletResponseWrapperためにaddHeader()およびsetHeader()メソッドがオーバーライドされているカスタムを提供し、ヘッダーが設定されている場合は値にSet-Cookie追加することをお勧めします。;HttpOnlyこれで使い続けることができますaddCookie()

于 2012-10-24T19:42:52.123 に答える