Cookie“安全”标志如何工作?


101

我知道带有secure标志的cookie 不会通过未加密的连接发送。我想知道这是如何深入进行的。

谁负责确定是否发送cookie?

Answers:


91

客户端仅为加密连接设置此设置,这在RFC 6265中定义:

Secure属性将cookie的范围限制为“安全”通道(其中“安全”由用户代理定义)。当cookie具有Secure属性时,仅当该请求通过安全通道(通常是通过传输层安全性(TLS)[RFC2818]进行的HTTP)传输时,用户代理才会将cookie包括在HTTP请求中。

尽管看似对保护cookie免受活动的网络攻击者有用,但是Secure属性仅保护cookie的机密性。活跃的网络攻击者可以从不安全的通道覆盖安全cookie,从而破坏其完整性(有关更多详细信息,请参见第8.6节)。


4
如果客户端还没有cookie,并且应该从服务器端发送它们(例如登录),服务器端将是决定在响应中包括cookie的人吗?
TED

2
服务器最初通过“ Set-Cookie标头”设置Cookie
Ivan

49

关于这个问题的另一句话是:

仅仅secure因为您的网站example.com完全是https而忽略是不够的。

如果您的用户明确到达http://example.com,他们将被重定向到,https://example.com但为时已晚;第一个请求包含cookie。


6
我知道这很旧,但是HSTS预加载通过防止此问题频繁发生而帮助解决了这种情况。它仍然不是100%修复,但是如果您真的想避免使用安全cookie,则这只是另一件事。
MonoChrome先生16年

5
@ Mr.MonoChrome为什么要避免使用安全cookie?
MEMark

@ Mr.MonoChrome尽管我相信某些旧版本或较低规格的浏览器甚至不支持HSTS
oldboy

1
好点子。对于.NET应用程序,最好在IIS(或web.config)中进行重定向,而不是通过编程方式(例如globals.asax)进行重定向
piris

因此,如果您不是从http重定向到https,而是仅在https上投放,则不需要secure吗?
braks
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.