本地存储和 cookie 哪个更安全?
Which one is more safe local storage or cookies?
我正在使用 Django REST API
(后端)和 React JS
(前端)开发一个项目。我正在使用 Json Web token
进行身份验证。但是我很困惑,我应该将 Json Web token
存储在 local storage
还是 cookies
中?哪个更安全,为什么?大公司如何处理 API
和 client side
之间的这种安全性?
基本题对什么比较稳妥?
主要威胁是 cross-site 脚本 (xss)。关于这一点,cookie 肯定更安全,当且仅当它被设置为 httpOnly。
但是,如果身份验证信息在 cookie 中,cross-site 请求伪造 (csrf) 就会成为一个问题,您必须实施 csrf 保护。不是世界末日,但你需要关心它。如果您将授权令牌存储在本地存储中并将其作为 header 发送,csrf 不是问题。
过期的 cookie(持久性 cookie)通常会保存到客户端的纯文本文件中,这在您的威胁模型中可能是也可能不是有效威胁。
所以简而言之,这取决于。总的来说,将令牌存储在 httpOnly 中,安全 cookie 通常被认为是最安全的,但它具有如上所述的含义。在大多数情况下,将令牌存储在本地存储中也是可以接受的。更重要的是,如果您需要将令牌发送到多个后端(在不同的来源),您不能将它放在 cookie 中,因为它只会被发送到它自己的来源。
一如既往,魔鬼在(实施)细节中。
我正在使用 Django REST API
(后端)和 React JS
(前端)开发一个项目。我正在使用 Json Web token
进行身份验证。但是我很困惑,我应该将 Json Web token
存储在 local storage
还是 cookies
中?哪个更安全,为什么?大公司如何处理 API
和 client side
之间的这种安全性?
基本题对什么比较稳妥?
主要威胁是 cross-site 脚本 (xss)。关于这一点,cookie 肯定更安全,当且仅当它被设置为 httpOnly。
但是,如果身份验证信息在 cookie 中,cross-site 请求伪造 (csrf) 就会成为一个问题,您必须实施 csrf 保护。不是世界末日,但你需要关心它。如果您将授权令牌存储在本地存储中并将其作为 header 发送,csrf 不是问题。
过期的 cookie(持久性 cookie)通常会保存到客户端的纯文本文件中,这在您的威胁模型中可能是也可能不是有效威胁。
所以简而言之,这取决于。总的来说,将令牌存储在 httpOnly 中,安全 cookie 通常被认为是最安全的,但它具有如上所述的含义。在大多数情况下,将令牌存储在本地存储中也是可以接受的。更重要的是,如果您需要将令牌发送到多个后端(在不同的来源),您不能将它放在 cookie 中,因为它只会被发送到它自己的来源。
一如既往,魔鬼在(实施)细节中。