Подтвердить что ты не робот

HttpOnly Session Cookie + Servlet 3.0 (например, Glassfish v3)

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

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

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

4b9b3361

Ответ 1

Это поддерживается с помощью сервлета 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>

Ответ 2

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

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