httpOnly Session Cookie + Servlet 3.0(例如 Glassfish v3)
Posted
技术标签:
【中文标题】httpOnly Session Cookie + Servlet 3.0(例如 Glassfish v3)【英文标题】:httpOnly Session Cookie + Servlet 3.0 (e.g. Glassfish v3) 【发布时间】:2011-03-03 06:41:28 【问题描述】:默认情况下,Glassfish v3 不会在会话 cookie 上设置 httpOnly 标志(当像往常一样使用 request.getSession()
创建时)。
我知道,有一个方法 javax.servlet.SessionCookieConfig.setHttpOnly()
,但我不确定这是否是最好的方法,如果是,最好的地方是放置那条线。
顺便说一句,当然它不能在 servlet 本身中完成(例如在 init() 中):
java.lang.IllegalStateException: PWC1426:
Unable to configure httpOnly session tracking cookie property for
servlet context /..., because this servlet context has already been initialized
一般来说,我更喜欢使用配置选项,例如在 web.xml 中。
【问题讨论】:
【参考方案1】:这是通过 Servlet 3.0 web.xml
支持的(请参阅 web-common_3_0.xsd
):
<web-app>
<session-config>
<cookie-config>
<!--
Specifies whether any session tracking cookies created
by this web application will be marked as HttpOnly
-->
<http-only>true</http-only>
</cookie-config>
</session-config>
</web-app>
【讨论】:
谢谢,成功了! (我只查看了 web-app_3_0.xsd,并没有意识到架构使用<xsd:include schemaLocation="web-common_3_0.xsd"/>
)
@chris_l 不客气。我也不知道,我在谷歌搜索时注意到了:)
如何在 web.xml 中声明 web-common_3_0.xsd?我将 web.xml 升级到 3.0 您也可以添加<secure>true</secure>
以提高安全性。
<session-config>
<cookie-config>
<http-only>true</http-only>
<secure>true</secure>
</cookie-config>
</session-config>
【讨论】:
安全标签出于某种原因向我发送了 ViewExpiredException。我错过了什么?以上是关于httpOnly Session Cookie + Servlet 3.0(例如 Glassfish v3)的主要内容,如果未能解决你的问题,请参考以下文章
用javascript能不能提取httponly属性的cookie
在 PHP 中的 PHPSESSID cookie 上设置 httpOnly 和安全