本地存储和Cookie哪个更安全?

7

我正在使用 Django REST API(后端)和 React JS(前端)开发一个项目。我正在使用 Json Web token 进行身份验证。但是我在这个问题上感到困惑,应该将 Json Web token 存储在 local storage 还是 cookies 中?哪一个更安全,为什么?大公司如何处理 API客户端 之间的这种安全性问题?

1个回答

12

根本问题是更安全的防御什么?

主要威胁是跨站点脚本攻击 (xss)。在这方面,如果将 cookie 设置为 httpOnly,则 cookie 明显更加安全。

然而,如果认证信息存储在 cookie 中,跨站请求伪造 (csrf) 就成为了一个问题,您必须实现 csrf 保护。虽然不至于末日到来,但您需要关注它。如果将认证令牌存储在本地存储中并作为标头发送,csrf 就不再是一个问题。

此外,具有过期时间的 cookie (持久 cookie) 经常保存在客户端的明文文件中,这可能或可能不是您的威胁模型中的有效威胁。

所以简而言之,这要视情况而定。总体而言,将令牌存储在 httpOnly 和安全的 cookie 中通常被认为是最安全的,但它会像上述那样产生影响。在大多数情况下,在本地存储中存储令牌也是可以接受的。更何况,如果您需要将令牌发送到多个后端(在不同的来源),您不能将其放在 cookie 中,因为它只能发送到自己的来源。

正如常言所说,细节决定成败(实现细节)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接