没有 HttpOnly 标志的安全 cookie 有问题吗?

信息安全 tls xss http 饼干
2021-08-15 12:03:52

我了解带有安全标志的 cookie 应通过 HTTPS 连接传输。这也意味着应该保护这些 cookie 免受攻击(私人 cookie)。因此,在这种私有 cookie 上设置 HttpOnly 标志以防止 XSS 非常重要。

带有安全标志但没有 HttpOnly 标志的私有 cookie 是否存在问题?

本质上,我认为应该将 HttpOnly 标志添加到带有安全标志的 cookie 中。

4个回答

secure标志确保cookie 的设置和传输仅以安全方式(即https)进行。如果有 http 选项,则安全标志应阻止该 cookie 的传输。因此,如果可以选择使用或回退到 http,那么缺少安全标志就会成为一个问题。

httpOnly确保脚本语言(即 javascript)无法获取 cookie 值(例如通过 document.cookie)。获得它的唯一方法是通过 http 请求和响应标头。因此,httpOnlyXSS 漏洞的丢失是窃取会话令牌的秘诀。

最好httpOnly为您的会话令牌放置和保护标志。其他 cookie,这取决于它的敏感程度和用途。

这两个标志缓解了两种完全不同的攻击向量。

  • HttpOnly - 缓解成功的跨站点脚本攻击。
  • 安全 - 缓解中间人攻击。

一个没有另一个意味着你只减轻了那个特定的向量。也就是说,这取决于您要防御的威胁。即使未设置 Secure HttpOnly 仍然有用,因为中间人也需要适当放置 - 例如,在本地网络上。跨站点脚本攻击者可能位于 Internet 上的任何位置,因此缓解这种情况本身仍然有用。

请注意,这些标志应该只是“纵深防御”措施。我会推荐使用 HSTS 而不是 Secure 标志,并在任何一天都推荐对 HttpOnly 标志进行适当输出编码的严格内容安全策略,但是如果您的系统已经构建好,以后再添加它们可能会令人望而却步。

HTTPonly cookie 标志充当会话 cookie 的安全控制,因为它阻止客户端脚本访问 cookie 值。这在攻击者设法在合法 HTML 页面中注入恶意脚本的情况下非常有效。HTTPonly 标志将阻止恶意脚本访问会话 cookie,从而防止会话劫持

请注意,此标志仅将风险降低到一定程度,如果存在脚本注入漏洞,它仍然可以通过多种方式被利用,如此处所述

“httponly”标志阻止通过浏览器上的客户端脚本(JS、TS)访问此 cookie。如果您的页面上有 XSS 漏洞,攻击者将无法访问“document.cookie”变量。

所以回答你的问题 - 是的。这可能是个问题。

受 SSL 保护的页面无法抵御可能的 XSS 攻击,并为攻击者提供了获取此类 cookie 的机会。