Cookie“安全”标志

信息安全 tls 网页浏览器 饼干
2021-08-26 16:56:49

cookie 的“安全”标志如何确定是否应包含 cookie 本身?

例如在 HTTP(未加密)连接上...

  1. 用户还没有 cookie 并尝试登录;
  2. 用户登录成功,服务器应该向客户端发送“安全”cookie;

    • 服务器会通过 HTTP 向客户端发送 cookie 吗?
    • 服务器是否负责检查连接并决定包含“安全”cookie?
    • 还是在 HTTP 级别上拒绝带有“安全”标志的 cookie?
3个回答

服务器可以要求浏览器通过 HTTP 设置带有安全标志的 cookie,但浏览器应该只通过 HTTPS 将它们包含在响应中。

但是您永远不应该通过 HTTP 直接响应通过 HTTP 的身份验证请求来提出身份验证请求。前者可能被篡改以将凭证复制到其他地方,而后者可以被嗅探。

混合和匹配 HTTP 和 HTTPS 并不是一个安全站点的好方法。它们应该有明确的界限。

浏览器应该确保,该安全cookie只发送回服务器HTTPS请求。您的应用程序应确保仅使用 HTTPS 调用页面时才创建安全 cookie

cookie 存储在客户端,并在“条件合适”时发送到服务器(特别是,cookie 与服务器相关联,并且仅发送回该服务器)。标记为安全的 cookie 是仅当连接“安全”(即 SSL,又名“HTTPS”)时才会发送到服务器的 cookie。

cookie 的内容由服务器控制:浏览器只会在 cookie 中存储服务器告诉他存储的内容。如果 cookie 的内容在某种程度上是敏感的(它们是机密的,或者不应允许外部更改,或者更常见的是同时进行),则将 cookie 标记为“安全”是有意义的。如果cookie 内容是敏感的,那么它们永远不应该通过纯 HTTP 发送;不是在 cookie 被发送回服务器时(“安全”标志是关于指示浏览器不要犯那个特定的错误),也不是在最初创建 cookie 时。

简而言之,如果服务器通过普通 HTTP发送一个带有“安全”标志的 cookie 用于存储在客户端中,那么就有问题了

简而言之:您需要站点范围的 HTTPS部分HTTPS 很难正确(在某种程度上,数学上不可能正确)。