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

Posted

技术标签:

【中文标题】本地存储和 cookie 哪个更安全?【英文标题】:Which one is more safe local storage or cookies? 【发布时间】:2018-11-18 20:00:17 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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

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

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

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

一如既往,魔鬼在(实施)细节中。

【讨论】:

以上是关于本地存储和 cookie 哪个更安全?的主要内容,如果未能解决你的问题,请参考以下文章

为啥大型网站不喜欢本地存储而不是 cookie? [复制]

将 jwt 保存在 cookie 中以将其传递到本地存储是不是安全?

[html5]localStorage的原理和HTML5本地存储安全性

JS,Cookie本地存储,设置获取cookie函数的封装!

JS,Cookie本地存储,设置获取cookie函数的封装!

JS 中的全局变量 vs 本地存储 vs DOM 中的值,哪个更高效? [关闭]