java - SSL 上 cookie 的默认行为

标签 java ssl cookies websphere httponly

我的 Web 应用程序完全使用 SSL。我想要一些有关以下几点的信息:

  1. 我只是想知道是否有可能在 HTTP 而不是安全 https。

  2. 或者,如果应用程序使用 SSL,那么 cookie 的默认行为是什么。它们将通过 HTTP 或 HTTPS 共享。

  3. 如果我想确保所有 Cookie 仅通过 HTTPS 共享,是否需要进行一些额外设置。

  4. 如何为 Java 应用程序进行这些设置(如果需要)。

  5. 安全 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/

相关文章:

java - IBM MQ 队列的深度

google-chrome - Chrome 80 允许不安全的 SameSite=None cookie

c# - Google chrome 在后续调用中丢失 MVC Auth Cookie(Set-Cookie 指令)

c++ - 在同一系统上运行的多个 boost::asio ssl 客户端

python - 如何使用python和mechanize登录网站

java - 在Java中的TextField中仅引入数字形成间隔

java - 查找对象数组中是否存在字符串/对象

KeyPad 组件的 Java KeyEvents

java - Netbeans 不兼容类型问题

jquery - 将 jQuery 的 ajax() 函数与 SSL 客户端证书结合使用