在cookie和本地存储之间将承载令牌分成两半是否更好?



我想保存一个承载令牌来对客户机上的api进行身份验证。我读到只有http的cookie和本地存储有不同的缺点,我觉得同时使用两者可以提高安全性。将令牌的一半保存在仅http的cookie中,另一半保存在本地存储中是明智的吗?还是应该只使用其中一个?

将SameSite设置为Lax或Strict, cookie将获得CSRF保护,这是导致从cookie转向承载令牌的主要弱点。设置为Secure, HttpOnly和SameSite=Lax/Strict的cookie只会在HTTPS上发送,不可用于脚本,并且对CSRF具有良好的保护。

保存在本地存储中的承载令牌可以被脚本访问,因此可以在XSS攻击中窃取,就像缺少HttpOnly标志的cookie一样。

如果您将一半存储在本地存储,一半作为cookie,您可能会在将其用于请求头之前将其合并。在这种情况下,您不能在cookie上设置HttpOnly标志,并且您将失去cookie存储可以提供的好处。因此拆分承载令牌是没有意义的。

如果你是在这种情况下,因为你使用的是OAuth 2.0的隐式代码流,请注意,这个流现在已被弃用,你应该使用PKCE流的授权代码,而你的身份验证令牌应该存储在如上所述的加固cookie中。

相关内容

最新更新