httpOnly Session Cookie + Servlet 3.0(例如Glassfish v3)

时间:2010-06-13 18:12:31

标签: java servlets java-ee glassfish java-ee-6

默认情况下,Glassfish v3不会在会话cookie上设置httpOnly标志(与request.getSession()照常创建时一样)。

我知道,有一种方法javax.servlet.SessionCookieConfig.setHttpOnly(),但我不确定,如果这是最好的方法,如果是的话,最好的地方就是放置那条线。

BTW,当然不能在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中。

2 个答案:

答案 0 :(得分:22)

这是通过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>

答案 1 :(得分:2)

您还可以添加<secure>true</secure>以提高安全性。

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