【发布时间】:2014-02-16 21:27:16
【问题描述】:
当应用程序依赖无状态身份验证(使用 HMAC 之类的东西)时,是否有必要使用 CSRF 保护?
例子:
我们有一个单页应用程序(否则我们必须在每个链接上附加令牌:
<a href="...?token=xyz">...</a>。用户使用
POST /auth对自己进行身份验证。成功验证后,服务器将返回一些令牌。令牌将通过 JavaScript 存储在单页应用程序内的某个变量中。
此令牌将用于访问受限 URL,例如
/admin。令牌将始终在 HTTP 标头中传输。
没有 Http 会话,也没有 Cookie。
据我了解,应该(?!)不可能使用跨站点攻击,因为浏览器不会存储令牌,因此它无法自动将其发送到服务器(这就是当使用 Cookie/会话)。
我错过了什么吗?
【问题讨论】:
-
注意基本身份验证。许多浏览器会自动为会话的其余部分发送基本的身份验证标头。这会使基本身份验证与 cookie 身份验证一样容易受到 CSRF 的攻击。
标签: authentication csrf single-page-application stateless csrf-protection