HTTPonly cookie 是否足够安全以实现“记住我”功能?

信息安全 验证 饼干
2021-09-04 13:56:49

我有一个具有“记住我”功能的网站。当有人单击该功能时,它会在 cookie 中设置用户密码和用户名以记住他/她。好的。

但是,该 cookie 是设置了 Secure 标志的 HTTPonly cookie(不用担心 XSS)。里面的保安够吗?

现在 cookie 不能以纯文本形式传输(根据安全标志),它不能通过 javascript ( document.cookie)读取所以我的观点是这个实现是足够安全的。但我很想知道你的情况。

1个回答

这个方案存在一些问题。

  1. 您永远不应将实际密码存储在 cookie 中。存储与帐户关联的临时会话令牌(在服务器上),然后您可以在用户注销时删除该令牌。如果您只是存储用户的凭据,则无法在不结束所有会话(通过使凭据无效)的情况下结束会话(在服务器端)。
  2. 将密码存储在 cookie 中意味着任何可以访问 cookie 的人(例如,同一台计算机上的另一个用户)将始终能够通过查看这些凭据、记住它们并获取以“记住”用户身份登录他们到另一台计算机。会话令牌应该是长而随机的,最好是短暂的。
  3. HttpOnly提供保护,防止XSS。它甚至不接近。它所做的只是阻止脚本读取 cookie。有人仍然可以接管登录用户浏览器的会话,并采取用户可以采取的任何行动,并将用户可以看到的所有内容发送给攻击者。事实上,有一个完整的漏洞利用框架明确地做到了这一点,实质上是让攻击者远程控制受害者的浏览器会话。你仍然需要小心的 XSS 保护。
  4. HttpOnly如果有任何页面反映了从服务器返回的 cookie 值,则根本不会提供保护。XSS 可以只读取服务器的响应。公平地说,你没有说有任何这样的页面,但我只是想强调一下“保护”的HttpOnly真正意义是多么陈旧。任何你认为“这不安全的东西,除了HttpOnly”几乎肯定即使有它也不安全。