【问题标题】:Session cookies are not being marked "secure" in Tomcat 6会话 cookie 在 Tomcat 6 中未标记为“安全”
【发布时间】:2015-12-23 11:40:10
【问题描述】:

我尝试了几种不同的方法来让会话 cookie 设置“安全”标志,但无法让它工作。以下是我迄今为止尝试过的事情:

1。在web.xml中使用

为会话 cookie 配置“安全”cookie 属性的标准方法是在 web.xml 中应用以下配置——但这不起作用,因为它仅受 Tomcat 7 以上版本支持。

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

2。在server.xml 中设置secure="true" &lt;Connector&gt;

我尝试了以下几种不同的连接器选项,但都没有帮助:

<Connector port="8443" protocol="HTTP/1.1"
  SSLEnabled="true" maxThreads="150" scheme="https"
  secure="true" clientAuth="false" sslProtocol="TLS" />

3。手动重写cookie

我在过滤器中添加了以下代码,通过将 JSESSIONID 值设置为自定义标头来重写它。但是我仍然没有在我的 cookie 中看到安全属性。

String sessionid = request.getSession().getId();
response.setHeader("SET-COOKIE", "JSESSIONID=" + sessionid + "; secure");

我想我别无选择。我该怎么做才能让我的会话 cookie 被标记为“安全”?

【问题讨论】:

    标签: java session tomcat cookies


    【解决方案1】:

    这在 Tomcat 6 中对你不起作用,因为 web.xml 中的 &lt;cookie-config&gt; 配置属性是在 Servlet Spec 3.0 中添加的,而 Tomcat 6 仅支持 Servlet Spec 2.5。所以如果你想使用&lt;cookie-config&gt;,你将不得不升级。 (无论如何,您可能应该升级。Tomcat 6 目前几乎处于维护模式,而 Tomcat 8 已经稳定了一段时间。)

    server.xml 中,设置secure="true" 没有任何改变,因为默认情况下,TLS 连接器已经设置了secure="true"

    您没有具体提到您正在运行的 Tomcat 6 版本,但事实上,如果在创建 cookie 时连接是安全的,Tomcat 会自动为 cookie 设置“安全”标志。

    我的猜测是,您的会话 cookie 是在用户使用安全连接之前创建的。发生这种情况时,会话 cookie 需要保持“不安全”,否则会话可能无法工作。

    您应该安排您的用户在创建会话之前开始使用 TLS,并且您应该获得“安全”的会话 cookie。

    【讨论】:

    • 我使用的是tomcat 6.0.37版。
    • 你能用最新的 Tomcat 6.0.44 重试你的测试吗?
    【解决方案2】:

    问题中的#2 解决方案 (secure="true") 确实有效。

    这是我在 tomcat 6.0.35 上使用的:

        <Connector port="8091"
                secure="true" 
                acceptCount="25" 
                connectionTimeout="20000" 
                disableUploadTimeout="true" 
                backlog="25" 
                maxSpareThreads="75" 
                maxThreads="1024" 
                minSpareThreads="25" 
                emptySessionPath="true"
                maxPostSize="4194304"
                maxParameterCount="20000"
    

    我注意到,无论在连接器上启用 SSL,它都能正常工作。

    【讨论】:

      猜你喜欢
      • 2012-07-30
      • 2021-10-25
      • 1970-01-01
      • 2023-03-12
      • 2018-10-10
      • 1970-01-01
      • 1970-01-01
      • 2015-05-22
      • 2011-04-08
      相关资源
      最近更新 更多