cookie 的“安全”标志如何确定是否应包含 cookie 本身?
例如在 HTTP(未加密)连接上...
- 用户还没有 cookie 并尝试登录;
用户登录成功,服务器应该向客户端发送“安全”cookie;
- 服务器会通过 HTTP 向客户端发送 cookie 吗?
- 服务器是否负责检查连接并决定包含“安全”cookie?
- 还是在 HTTP 级别上拒绝带有“安全”标志的 cookie?
cookie 的“安全”标志如何确定是否应包含 cookie 本身?
例如在 HTTP(未加密)连接上...
用户登录成功,服务器应该向客户端发送“安全”cookie;
服务器可以要求浏览器通过 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 很难正确(在某种程度上,数学上不可能正确)。