2012-08-01 13 views
5

He hecho muchos cambios y no he podido encontrar una respuesta. He intentado fijar lo siguiente en el archivo web.xml en la guerra sin impacto:Cómo marcar la cookie de sesión como segura (https solamente) en tomcat 6

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

Adición useHttpOnly en el archivo context.xml Tomcat funciona para restringir las cookies de sólo HTTP, pero todavía tengo que hacerlas seguras .

Respuesta

4

No tiene que hacer nada. Siempre que la solicitud que inicie la sesión sea https Tomcat marcará la cookie de sesión como secure.

También miré para ver si había algo que documentara oficialmente ese hecho pero no pude encontrarlo. Pero ese es el comportamiento de al menos Tomcat 6.0.32 en adelante.

Aquí está el código de org/apache/catalina/connector/Request.java que, al final del método, comprueba si la solicitud es seguro y si es así, establece el indicador secure en la cookie:

/** 
* Configures the given JSESSIONID cookie. 
* 
* @param cookie The JSESSIONID cookie to be configured 
*/ 
protected void configureSessionCookie(Cookie cookie) { 
    cookie.setMaxAge(-1); 

    Context ctxt = getContext(); 

    String contextPath = null; 
    if (ctxt != null && !getConnector().getEmptySessionPath()) { 
     if (ctxt.getSessionCookiePath() != null) { 
      contextPath = ctxt.getSessionCookiePath(); 
     } else { 
      contextPath = ctxt.getEncodedPath(); 
     } 
    } 
    if ((contextPath != null) && (contextPath.length() > 0)) { 
     cookie.setPath(contextPath); 
    } else { 
     cookie.setPath("/"); 
    } 

    if (ctxt != null && ctxt.getSessionCookieDomain() != null) { 
     cookie.setDomain(ctxt.getSessionCookieDomain()); 
    } 

    if (isSecure()) { 
     cookie.setSecure(true); 
    } 
} 

ACTUALIZACIÓN: se puede intentar establecerlo usted mismo manualmente utilizando un filtro, etc. Puede consultar un ejemplo de set 'secure' flag to JSESSION id cookie

+0

Solo quiero confirmar que: Visualización de las cookies de sesión en una herramienta de desarrollo del navegador de su elección (Webinspector de Safari en mi caso) le dirá que la cookie es de hecho una cookie segura solamente –

Cuestiones relacionadas