基于令牌的身份验证中的 CSRF

rah*_*lmr 5 oauth csrf antiforgerytoken csrf-protection angularjs

我们的 angularjs 应用程序有一个基于令牌的 OAuth 身份验证机制。acunetix 工具表明存在 XSRF 威胁。

CSRF 是否是基于令牌的身份验证的问题(因为我们没有使用任何 cookie 进行用户识别/身份验证/会话)?

如果 CSRF 是基于令牌的身份验证的问题,是否有任何方法可以在不使用 cookie 的情况下实施预防?

Ily*_*dik 5

据我所知,基于令牌的身份验证不受 CSRF 的影响。例如,如果您使用 cookie,而坏人将用户引诱到他们的站点,在那里他们可以创建一个特殊的按钮来发布到您的站点 -> 这里是 CSRF,您可以在其中代表用户执行一些请求。

现在,如果您使用存储在会话/本地存储中的令牌,例如,它们永远不会与请求一起自动传递。您可能会使用角度拦截器或类似技术将它与每个 XHR 请求一起传递。这永远不会自动发生。

您可以在这篇非常好的文章中阅读更多有关令牌身份验证的信息。在第 6 点中,有一小部分是关于 XSRF/CSRF、XSS。

根据我的经验,这些大型安全工具通常会告诉你一些不真实的东西,只是为了让自己变得更“重要”。但是,确切地知道它计划如何执行 CSRF 以及究竟是什么让它认为这是可能的会很有趣?例如,您可能错过了一个饼干?

PS XSS 攻击(窃取令牌)通过令牌变得更有可能,因为您可以将 HTTP-only like 用于 cookie。因此,任何成功的 XSS 都能够读取您的令牌,因此您需要确保对此有很好的保护。但它通常被框架很好地覆盖。