2012-08-01 7 views
5

Ich habe eine Menge Googeling getan und konnte keine Antwort finden. Ich habe versucht, ohne Auswirkungen die folgenden in der Datei web.xml im Krieg Einstellung:Wie Session-Cookie als sicher (nur https) in Tomcat 6

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

Hinzufügen useHttpOnly in der tomcat context.xml Datei funktioniert Cookies beschränken nur auf http aber ich muss noch, um sie zu sichern .

Antwort

4

Sie müssen nichts tun. Solange die Anfrage zum Starten der Sitzung https lautet, markiert Tomcat den Sitzungscookie als secure.

Ich schaute auch, ob es etwas gab, das offiziell diese Tatsache dokumentierte, aber ich konnte es nicht finden. Aber das ist das Verhalten von Tomcat 6.0.32 und höher. Hier

ist der Code von org/apache/catalina/connector/Request.java, die am Ende des Verfahrens wird überprüft, ob die Anforderung sicher ist und wenn es ist, setzt die secure Flagge auf den Keks:

/** 
* 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); 
    } 
} 

UPDATE: Sie kann manuell versuchen, dies selbst zu setzen, indem Sie einen Filter usw. verwenden. Sie können ein Beispiel von set 'secure' flag to JSESSION id cookie

+0

überprüfen Ich möchte nur bestätigen: Betrachten Sie Ihre Session-Cookies in einem Browser-Tool Ihrer Wahl (Safari Webinspector in meinem Fall)) wird Ihnen mitteilen, dass es sich bei dem Cookie tatsächlich um einen Nur-Sicherheit-Cookie handelt –