Cookie还是本地存储?

问题描述 投票:0回答:1

背景:我有两个应用程序的前端和后端。用django后端django rest framework。对于身份验证,我使用令牌。因此,当客户端登录时,它通过post向后端请求令牌。客户端将此令牌设置为header,并将令牌保留在localStorage中。我将令牌保存到localStorage,以防止用户在重新打开站点后再次发出请求。但是我写了很多文章,其中localsStorage容易受到攻击,并且容易受到xss攻击。现在我要谈谈cookie。但是我不想重写我的后端逻辑。我正在考虑通过js将令牌写入cookie。

我的问题:我应该将令牌写入cookie吗?还是应该重写后端应用程序并使用会话?还是mb保持原样?

javascript security cookies local-storage token
1个回答
0
投票

Cookie和本地存储都同样容易在客户端被篡改:客户端可以看到并修改这两者,它们具有的任何(可能是恶意的)扩展名也可以。但是,如果与您的站点的连接是通过HTTPS进行的,并且它们的浏览器/操作系统/硬件没有任何恶意窥探,那么cookie或本地存储都不会有问题。

它们之间的主要区别是,每个网络请求都将cookie发送到服务器,而本地存储则保留在用户的硬盘驱动器上,而不会发送到服务器。

Cookie可以说比本地存储更容易受[[little bit more]的攻击,因为如果Cookie通过加密连接发送,则可以被拦截-但本地存储仍位于客户端计算机上,因此被拦截的可能性较小被恶意破坏。但是,如果连接已加密(如果脚本要求令牌与请求一起发送到服务器,则可能应该使用cookie,以便可以在后端检查它们。 (如果改为使用本地存储,则必须在每次请求时都手动发送令牌,这仍然是可能的,但考虑到cookie可以完成相同的操作而无需您手动干预,这有点不合理。)

如果您的脚本

不需要

要求在每次请求时都发送令牌,则可以随意使用本地存储。如果服务器

never

在生成令牌后需要查看令牌,则不要使用cookie,因为它无缘无故会产生不必要的开销。上面相同的一般逻辑适用于客户端的any数据。如果服务器经常或有时需要查看它,则cookie是一个不错的选择,如果数据不是太大。如果服务器永远不需要它,则cookie是错误的选择。
© www.soinside.com 2019 - 2024. All rights reserved.