我的 Web 应用程序完全使用 SSL。我想要一些有关以下几点的信息:
我只是想知道是否有可能在 HTTP 而不是安全 https。
或者,如果应用程序使用 SSL,那么 cookie 的默认行为是什么。它们将通过 HTTP 或 HTTPS 共享。
如果我想确保所有 Cookie 仅通过 HTTPS 共享,是否需要进行一些额外设置。
如何为 Java 应用程序进行这些设置(如果需要)。
安全 cookie 是什么样子的。它是加密可见还是根本不可见。
在我的应用程序中,我使用 mozilla add on : firebug 来检查所有 cookie 的安全性。我可以看到,很少有 cookie 是安全的,也很少有不是。那么这是如何运作的呢?我没有使用任何特定属性来确保少数 cookie 的安全。
最佳答案
在 Servlet 3.0 兼容的应用程序服务器中,您可以通过将以下内容添加到 web.xml 来设置 session cookie (JSESSIONID) 的仅 Http 和安全标志:
<session-config>
...
<cookie-config>
<http-only>true</http-only>
<secure>true</secure>
</cookie-config>
</session-config>
参见Secure and HttpOnly flags for session cookie Websphere 7
对于其他cookie,您可以设置secure标志:
public void setSecure(boolean flag)
Indicates whether the cookie should only be sent using a secure protocol, such as HTTPS or SSL.
http://docs.oracle.com/javase/7/docs/api/java/net/HttpCookie.html#setSecure%28boolean%29
安全 cookie 不使用任何(附加)加密。 SSL/TLS传输层为HTTPS提供加密,因此包括cookie在内的HTTP协议(protocol)都会被加密。
关于问题 1..3:如果连接使用 HTTP 并且您将 cookie 标记为安全,它们将通过 HTTP 发送到客户端,但(兼容的)客户端不会发送它们通过非安全连接返回。据我所知,安全标志的默认值未指定。因此,如果通过 HTTPS(直接或通过反向代理)访问 Web 应用程序,我建议将所有应用程序指定的 Cookie 的安全标志设置为 true。
关于java - SSL 上 cookie 的默认行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26355270/