httpOnly Session Cookie + Servlet 3.0 (например, Glassfish v3) - PullRequest
18 голосов
/ 13 июня 2010

По умолчанию 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 ]

23 голосов
/ 14 июня 2010

Это поддерживается через сервлет 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>
3 голосов
/ 15 октября 2014

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

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