元标记中使用令牌的 CSRF 保护 - 为什么它不能被盗

CSRF Protection with tokens in meta tag - why can't it be stolen?

本文关键字:为什么 保护 不能 CSRF 令牌      更新时间:2023-09-26

能够在 ajax 调用中包含 csrf 预防令牌的建议是将它们作为元标记包含在页面中,然后可以访问该标记并将其包含在标头中。http://docs.spring.io/spring-security/site/docs/3.2.0.CI-SNAPSHOT/reference/html/csrf.html

这怎么不能被利用呢?例如,如果 example.com 元标记中包含 csrf 令牌,我是否可以创建一个恶意站点,其中包含一些 javascript 来调用 example.com,然后解析响应,找到元标记,然后将令牌值注入我的恶意页面表单?

CSRF 令牌对于每个会话都是唯一的。一旦生成,它仅有效使用一次,绑定到特定会话。

恶意人员可能会生成一个,但它将特定于他们的浏览器会话。简而言之,他们只会用它来利用自己。

至于通过JavaScript生成攻击,这实际上是一个与CSRF分开的问题。CSRF是维基百科中这样的攻击:

<img src="http://bank.example.com/withdraw?account=Alice&amount=1000000&for=Mallory"/>

防范恶意JavaScript是另一回事。站点通过清理用户输入、iframe沙盒和依赖同源策略来保护自己免受 XSS 和其他类型的 JavaScript 注入的影响。

博士

如果你在你的网站中运行其他人不受信任的JavaScript,那么你会遇到比CSRF更大的问题。

由于

http://en.wikipedia.org/wiki/Same-origin_policy,在 Alice 的浏览器中运行的脚本 chuck.com 无法读取 carol.com 的内容。

chuck.com 上的脚本可以 POST 到 carol.com,但无法读取和解析其内容。