我读过JWT令牌不应该存储在localStroage中,因为XSS攻击可以读取它们。提出的解决方案是在HTTPOnly cookies中存储JWT令牌,并使用反CSRF/双提交cookie。OWASP说,所有CSRF解决方案都容易受到XSS的攻击。如果是这样的话,那么使用CSRF的HTTPOnly cookie中的JWT是否同样容易受到XSS的攻击呢?如果是这样的话,为什么还要麻烦w/ CSRF而只将您的JWT存储在localStorage中呢?
发布于 2016-04-11 19:24:38
我读过JWT令牌不应该存储在localStroage中,因为XSS攻击可以读取它们。
是真的。如果您将信息存储在JWT中,并且不希望攻击者通过XSS读取这些信息,那么将它们存储在httpOnly cookie中是个好主意。
建议的解决方案是将JWT令牌存储在HTTPOnly cookie中,并使用CSRF w/双提交cookie。
我想你在这里混淆了两件事。将令牌存储在httpOnly cookie中已经是不被读取的解决方案。
CSRF是另一回事,它不能用来读出数据。但是,它可以用于在网站上为用户执行该用户不打算执行的操作。其中一个解决方案是双提交cookie模式。
OWASP说,所有CSRF解决方案都容易受到XSS的攻击。
是的,差不多。
如果是这样的话,那么使用CSRF的HTTPOnly cookie中的JWT是否同样容易受到XSS的攻击呢?
问题是,您不能使用存储在带有双重提交cookie模式的httpOnly cookie中的反CSRF令牌。
您需要客户端访问令牌,因为否则不可能将令牌插入表单中。
因此,要使这一工作,您需要使您的cookie而不是httpOnly,或存储在其他地方,除了cookie,如在本地存储。
无论哪种方式,一旦获得XSS,攻击者就可以绕过您的CSRF保护。
如果是这样的话,为什么还要麻烦w/ CSRF而只将您的JWT存储在localStorage中呢?
如果您想对攻击者隐藏JWT的内容,即使存在XSS漏洞,也应该将其存储在httpOnly cookie中。如果您不关心,或者您需要自己访问信息,那么localStorage也同样有效。
https://security.stackexchange.com/questions/120160
复制相似问题