JWT cookie HTTPS CSRF

我已经在移动应用程序上使用JWT,但我将首次在网站上实现身份验证,我还有一点我仍然不理解:

>如果我在localStorage中使用JWT令牌,则可以进行XSS攻击
>如果我使用带有cookie的JWT令牌,则可以进行CRSF攻击

…,但是如果我使用带有httpOnly安全cookie的HTTPS的JWT令牌和1个月的令牌生存期,在这种情况下,CSRF攻击仍然可能吗?

我在网上看到了带有cookie的自定义令牌或带有localStorage或JWT的自定义令牌,但我没有明确地得到httpOnly安全cookie JWT HTTPS的答案需要CSRF.

最佳答案 如果您使用JWT作为身份验证令牌,则应将其存储为标记为httpOnly且安全的cookie,与使用本地/会话存储相关联.正如您所提到的,这可以防止XSS攻击,我们担心恶意
JavaScript被注入我们的页面并窃取我们的会话令牌.

> JavaScript无法读取标记为httpOnly的cookie,因此不能在XSS攻击中被盗.
>然而,本地/会话存储可以通过JavaScript读取,因此将会话令牌放在那里会使其容易受到XSS攻击.

但是,使会话令牌cookie httpOnly和安全仍然容易受到CSRF攻击.要了解原因,请记住Cookie标记有源自的域,并且浏览器仅发送与发送请求的域匹配的cookie(独立于发送请求的页面域).例如,假设我在一个选项卡中登录stackoverflow.com,在另一个选项卡中登录evil.com.如果evil.com对stackoverflow.com/delete-my-account进行ajax调用,我的stackoverflow身份验证令牌cookie将被发送到stackoverflow服务器.除非该端点正在防止CSRF,否则我的帐户将被删除.

有一些防止CSRF攻击的技术.我建议阅读有关CSRF攻击和预防的this OWASP page.

点赞