我正在使用Django REST API
(后端)和React JS
(前端)开发项目。我正在使用Json Web token
进行身份验证。但我感到困惑的是,我是否应该将Json Web token
存储在local storage
或cookies
中?哪一个更安全,为什么?大公司在API
和client side
之间如何处理这种安全性?
答案 0 :(得分:9)
根本问题是针对什么更安全?
主要威胁是跨站点脚本(xss)。关于这一点,当且仅当它被设置为httpOnly时,cookie肯定更安全。
但是,如果身份验证信息位于cookie中,则跨站点请求伪造(csrf)成为问题,您必须实施csrf保护。不是世界末日,但你需要关心它。如果将身份验证令牌存储在localstorage中并将其作为标头发送,则csrf不是问题。
此外,带有到期时间的Cookie(持久性Cookie)通常会保存到客户端上的纯文本文件中,这可能是威胁模型中的有效威胁,也可能不是。
总之,这取决于。总的来说,将令牌存储在httpOnly安全cookie中通常被认为是最安全的,但它具有如上所述的含义。在大多数情况下,将令牌存储在localstorage中也是可以接受的。更重要的是因为如果你需要将令牌发送到多个后端(在不同的起源上),你就不能将它放在cookie中,因为那只会发送到它自己的源头。
与往常一样,魔鬼在(实施)细节中。