Javascript Cookie还是本地存储?
背景:我有两个应用程序前端和后端。使用Javascript Cookie还是本地存储?,javascript,security,cookies,local-storage,token,Javascript,Security,Cookies,Local Storage,Token,背景:我有两个应用程序前端和后端。使用django rest框架对itdjango进行后端处理。对于auth,我使用token。因此,当客户端登录时,它通过post从后端请求令牌。客户机将此令牌设置为标题,并将令牌保留在本地存储中。我将令牌保存到localStorage,以防止用户在重新打开站点后发出第二个请求。但是我写了很多文章,其中写到localsStorage易受攻击,并且容易受到xss攻击。现在我想知道关于cookie。但我不想重写我的后端逻辑。我正在考虑通过js将令牌写入cookie
django rest框架
对itdjango
进行后端处理。对于auth,我使用token。因此,当客户端登录时,它通过post
从后端请求令牌。客户机将此令牌设置为标题
,并将令牌保留在本地存储中
。我将令牌保存到localStorage
,以防止用户在重新打开站点后发出第二个请求。但是我写了很多文章,其中写到localsStorage
易受攻击,并且容易受到xss
攻击。现在我想知道关于cookie
。但我不想重写我的后端逻辑。我正在考虑通过js将令牌写入cookie
我的问题:我应该将令牌写入
cookie
?还是应该重写后端应用程序并使用会话?还是保持原样 Cookie和本地存储同样容易在客户端被篡改:客户端可以查看和修改这两种内容,它们拥有的任何(可能是恶意的)扩展也可以。但是,如果通过HTTPS连接到您的站点,并且他们的浏览器/操作系统/硬件没有恶意窥探东西,那么cookie或本地存储就不会有问题
它们之间的主要区别在于,cookies会随每个网络请求一起发送到服务器,而本地存储会保留在用户的硬盘上,不会发送到服务器
cookie可以说比本地存储更容易受到攻击,因为如果cookie通过未加密的连接发送,它可以被拦截——但本地存储留在客户端的机器上,因此被恶意内容拦截的可能性较小。但是如果连接是加密的(应该是加密的),那么使用cookie就可以了
如果脚本要求将令牌与请求一起发送到服务器,那么您可能应该使用cookie,以便在后端检查它们。(如果改为使用本地存储,则每次请求都必须手动发送令牌,这仍然是可能的,但考虑到cookie可以在不需要您手动干预的情况下执行相同的操作,这有点不雅观。)
如果您的脚本不需要随每个请求一起发送令牌,那么您可以随意使用本地存储。如果服务器在生成令牌后从不需要查看令牌,那么就不要使用cookie,因为它会无缘无故地增加不必要的开销
上述相同的一般逻辑适用于客户端上的任何数据。如果服务器经常或有时需要查看,如果数据不太大,cookies是一个不错的选择。如果服务器永远不需要查看它,那么Cookie是错误的选择。您也可以将该令牌存储在应用程序中。如果您只是含糊地提到您在某处读到的一些潜在安全问题,则无法正确回答此类问题。我将令牌存储在本地存储和应用程序中。但当标签关闭时,应用程序中的令牌将丢失。当用户再次打开选项卡时,我将从localStorage获取令牌@messerbillI不知道哪些地方应该在CBroe进行更详细的描述