【问题标题】:CSRF in token based authentication基于令牌的身份验证中的 CSRF
【发布时间】:2016-10-08 07:26:30
【问题描述】:
我们的 angularjs 应用程序有一个基于令牌的 OAuth 身份验证机制。 acunetix 工具表明存在 XSRF 威胁。
CSRF 是否是基于令牌的身份验证的问题(因为我们没有使用任何 cookie 进行用户识别/身份验证/会话)?
如果 CSRF 是基于令牌的身份验证的问题,是否有任何方法可以在不使用 cookie 的情况下实施预防?
【问题讨论】:
标签:
angularjs
oauth
csrf
csrf-protection
antiforgerytoken
【解决方案1】:
据我所知,基于令牌的身份验证绝不会受到 CSRF 的影响。例如。如果您使用 cookie,而坏人引诱用户进入他们的网站,他们可以创建一个特殊按钮,向您的网站发布帖子 -> 这是 CSRF,您可以在其中代表用户执行一些请求。
现在,如果您使用存储在会话/本地存储中的令牌,例如,它们永远不会随请求一起自动传递。您可能使用角拦截器或类似技术将其与每个 XHR 请求一起传递。这永远不会自动发生。
您可以在this 非常好的帖子中阅读更多关于令牌身份验证的信息。在第 6 点中,有一小部分是关于 XSRF/CSRF、XSS。
根据我的经验,这些大型安全工具通常可以告诉您一些不真实的信息,只是为了让自己更“重要”。但是确切地知道它计划如何执行 CSRF 以及究竟是什么让它认为这可能会很有趣?例如。你可能有一个你错过的cookie?
附:
XSS 攻击(窃取令牌)使用令牌更有可能,因为您可以将 HTTP-only like 用于 cookie。所以任何成功的 XSS 都可以读取你的令牌,所以你需要确保你有一个很好的保护措施。但它通常被框架很好地覆盖。