哪一个更安全的本地存储或cookie?

时间:2018-06-08 17:51:18

标签: reactjs security django-rest-framework jwt software-design

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

1 个答案:

答案 0 :(得分:9)

根本问题是针对什么更安全?

主要威胁是跨站点脚本(xss)。关于这一点,当且仅当它被设置为httpOnly时,cookie肯定更安全。

但是,如果身份验证信息位于cookie中,则跨站点请求伪造(csrf)成为问题,您必须实施csrf保护。不是世界末日,但你需要关心它。如果将身份验证令牌存储在localstorage中并将其作为标头发送,则csrf不是问题。

此外,带有到期时间的Cookie(持久性Cookie)通常会保存到客户端上的纯文本文件中,这可能是威胁模型中的有效威胁,也可能不是。

总之,这取决于。总的来说,将令牌存储在httpOnly安全cookie中通常被认为是最安全的,但它具有如上所述的含义。在大多数情况下,将令牌存储在localstorage中也是可以接受的。更重要的是因为如果你需要将令牌发送到多个后端(在不同的起源上),你就不能将它放在cookie中,因为那只会发送到它自己的源头。

与往常一样,魔鬼在(实施)细节中。