我已经在移动应用程序上使用JWT,但我将首次在网站上实现身份验证,我还有一点我还不明白:
...,但如果我通过HTTPS使用带有httpOnly +安全cookie的JWT令牌并且令牌生存期为1个月,那么在这种情况下是否还可以进行CSRF攻击?
我在网上看到带有cookie的自定义令牌或带有localStorage或JWT的自定义令牌,但我没有明确得到httpOnly +安全cookie + JWT + HTTPS + CSRF需求的答案。
答案 0 :(得分:1)
如果您使用JWT作为身份验证令牌,则应将其存储为标记为httpOnly
和secure
的Cookie,与使用本地/会话存储相关联。正如您所提到的,这可以防止XSS攻击,我们担心恶意JavaScript被注入我们的页面并窃取我们的会话令牌。
httpOnly
的Cookie,因此无法在XSS攻击中被盗。但是,使会话令牌cookie httpOnly
和secure
仍然容易受到CSRF攻击。要了解原因,请记住,Cookie会使用它们所源自的域进行标记,并且浏览器只会发送与发送请求的域匹配的Cookie(独立于页面的域名)请求是从)发送的。例如,假设我在一个标签中登录stackoverflow.com
,在另一个标签中转到evil.com
。如果evil.com
对stackoverflow.com/delete-my-account
进行ajax调用,我的stackoverflow身份验证令牌cookie将被发送到stackoverflow服务器。除非该端点正在防止CSRF,否则我的帐户将被删除。
有一些防止CSRF攻击的技术。我建议阅读有关CSRF攻击和预防的this OWASP page。