簡體   English   中英

Tomcat 5.5.36上的HttpOnly cookie

[英]HttpOnly cookies on Tomcat 5.5.36

我在線程上看到了如何在tomcat / java webapps中配置HttpOnly cookie? Tomcat 5.5。(> 28)應該支持<Context>元素中指定的特定於供應商的useHttpOnly屬性。

我將此屬性添加到了server.xml中配置的所有上下文中。

但是,只有JSESSIONID附加了"; httpOnly"標志。 所有其他cookie都與我添加useHttpOnly="true"之前的所有cookie完全相同。

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的第三方框架)

服務器中的useHttpOnly配置確實僅適用於服務器控制的cookie,例如僅JSESSIONID

對於由webapp控制的cookie,您必須自己手動創建整個cookie標頭。 Cookie類不適合,因為Servlet 3.0中引入了setHttpOnly()方法,但是您使用Tomcat 5.5的原因是Cookie 2.4類中沒有Servlet 2.4容器。 您至少需要升級到Tomcat 7,它是與Servlet 3.0兼容的容器。

您可以手動在提到的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-CookieSet-Cookie標頭,是否設置了Set-Cookie標頭。 ,然后將;HttpOnly添加到不存在的值。 這樣,您可以繼續使用addCookie()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM