如果我们所有站点都是安全的(HTTPS),那么将cookie上的“安全”标志设置为多余?

时间:2016-09-08 07:10:25

标签: security cookies setcookie

如果我们所有网站都是安全的(HTTPS),那么将Cookie上的secure标志设置为多余?

如果我们的设置中只有安全网站,是否有设置/不设置secure的优缺点?

3 个答案:

答案 0 :(得分:7)

不,这不是多余的。

请考虑以下情况。

情况正常:

User --> Your Website (example.com)

Man-In-The-Middle情况:

User --> MITM --> Your Website (example.com)

如果您的网站在端口80上侦听普通HTTP,而端口443在HTTPS上侦听,则MITM必须将HTTPS流量从用户传递到您的网站作为纯TCP数据,否则用户将获得证书警告到期事实上,攻击者没有example.com SSL / TLS证书的私钥。

但是,它们仍然可以拦截端口80上的普通HTTP流量。因此,如果example.com设置了cookie

AuthenticationSession=0d8d7050f48dc858975c48d32796cd2e5bad2d18

没有安全标志,攻击者仍然可以在端口80上拦截它。

如果您的网站在端口80上没有收听,情况如下。

User -tcp80--> MITM
User -tcp443-> MITM -tcp443-> Your Website (example.com)

所以,尽管端口80上没有任何东西在监听,但攻击者可以注入以下内容

<img src="http://example.com/foo.jpg" />

用户做出的另一个请求:

User -tcp80--> MITM --> example.org

导致以下情况发生:

User -tcp80--> MITM intercepting example.com

将Cookie发送给example.com

的攻击者

请注意,http://example.com:443还会导致在服务器意识到尚未进行HTTPS握手之前发送cookie数据,并以明文形式公开cookie:

User --plain HTTP over tcp443--> example.com

在这种情况下,攻击者不必是中间人,他们可能只是被动地观察到example.com的连接。

一旦攻击者获取了某个站点的主身份验证cookie,他们就可以有效地劫持用户的会话并以其身份登录。

如果要使安全标志冗余,请实施HSTS策略。这通知浏览器永远不会通过普通HTTP连接到您的网站,直到max-age过期(比如180天)。

因此,任何试图在图像标记中注入普通HTTP URL的攻击者都会将此更改为HTTPS,因此除了服务器之外的其他任何内容都将使其无法读取。这是known as a 307 internal redirect

  

这是[浏览器]说的   “我甚至不打算发出这个请求,而是我要改变   它到HTTPS然后再试一次“

然而,作为深度防御方法并为旧浏览器提供支持,我仍然会包含Secure标记。

缺点?您将发送字符串中的字节数&#34; ; secure&#34;额外的,但仅限于设置cookie时。如果你需要在普通的HTTP上使用cookie,你就不能。

答案 1 :(得分:3)

  

如果我们所有网站都是安全的(HTTPS),那么将Cookie上的安全标记设置为多余吗?

不,不是。

安全标志可防止cookie通过HTTP发送。

即使您的服务器根本没有侦听端口80(并且大多数HTTPS站点也有一个重定向到HTTPS端的HTTP站点),尝试连接到端口的客户端80可能受到中间人攻击。

赞成

它保护cookie

缺点

它花费了无关紧要的字节数。

答案 2 :(得分:1)

安全标记的要点是浏览器永远不会通过普通的http发送cookie,无论应用程序开发人员是否打算仅通过https发送它。考虑一种攻击,例如在html编辑器表单中,攻击者可以插入图像。如果他添加了带有http://server来源的图像,则除非设置为安全,否则将以明文形式发送cookie。当然,可能有无数其他方法尝试注入简单的http请求。

如果应用程序服务器只侦听tcp / 443,那对攻击者来说就更难了(他仍然可以尝试像http://server:443这样的事情,看看服务器丢失明显无效的连接的速度有多快)。将所有cookie设置为安全仍然是最佳做法。

所以这不仅仅是关于中间人。