[英]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-Cookie
了Set-Cookie
標頭,是否設置了Set-Cookie
標頭。 ,然后將;HttpOnly
添加到不存在的值。 這樣,您可以繼續使用addCookie()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.