HttpOnly Session Cookie + сервлет 3.0 (например Glassfish v3)


По умолчанию Glassfish v3 не устанавливает флаг httpOnly для сеансовых файлов cookie (при обычном создании с помощью request.getSession()).

Я знаю, что есть метод javax.servlet.SessionCookieConfig.setHttpOnly(), но я не уверен, что это лучший способ сделать это, и если да, то где лучше всего поставить эту линию.

Кстати, конечно, это не может быть сделано в самом сервлете (например, в 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 17

2 ответа:

Это поддерживается через сервлет 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>

Вы также можете добавить <secure>true</secure> для повышения безопасности.

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