当应用程序依赖无状态身份验证(使用类似HMAC)时,是否有必要使用CSRF保护?使用无状态(= Sessionless)身份验证时需要CSRF令牌吗?
例子:
我们已经有了一个单页的应用程序(否则我们不得不追加每条链路上的标记:。
<a href="...?token=xyz">...</a>
用户验证自己使用
POST /auth
身份验证成功服务器将返回一些令牌令牌将通过JavaScript存储在单个页面应用内的某个变量中
此令牌将用于访问受限制的URL,如
/admin
。令牌将始终在HTTP头中传输。
没有Http Session,也没有Cookies。
据我了解,应该有(?!)是没有可能利用跨站攻击,因为浏览器不会存储令牌,因此它不能自动将其发送到服务器(这是使用Cookies/Session时会发生什么)。
我错过了什么吗?
请注意基本身份验证。许多浏览器会自动发送会话剩余部分的基本身份验证标头。这可以使基本身份验证容易受到CSRF作为cookie身份验证的影响。 – phylae