2010-06-13 37 views
17

De forma predeterminada, Glassfish v3 no establece el indicador httpOnly en las cookies de sesión (cuando se crea como de costumbre con request.getSession()).httpOnly Session Cookie + Servlet 3.0 (por ejemplo, Glassfish v3)

Lo sé, hay un método javax.servlet.SessionCookieConfig.setHttpOnly(), pero no estoy seguro, si esa es la mejor manera de hacerlo, y en caso afirmativo, dónde sería el mejor lugar para poner esa línea.

BTW, por supuesto que puede no hacerse en la propia servlet (por ejemplo, en init()):

java.lang.IllegalStateException: PWC1426: 
Unable to configure httpOnly session tracking cookie property for 
servlet context /..., because this servlet context has already been initialized 

Generalmente, preferiría usar una opción de configuración, por ejemplo, en web.xml.

Respuesta

21

Esto es apoyado a través de un Servlet 3.0 web.xml (ver 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> 
+0

¡Gracias, funcionó! (Solo busqué en web-app_3_0.xsd, y no me di cuenta, que el esquema usa '') –

+0

@chris_l De nada. Yo tampoco lo sabía, noté que mientras buscaba en Google :) –

+0

¿Cómo puedo declarar web-common_3_0.xsd en mi web.xml? Actualicé mi web.xml a 3.0 user6123723

3

También puede agregar <secure>true</secure> para aumentar la seguridad.

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

La etiqueta segura me está enviando una ViewExpiredException por algún motivo. ¿Qué me estoy perdiendo? –

Cuestiones relacionadas