能够在ajax调用中包含csrf预防令牌的建议是将它们作为元标记包含在页面中,然后可以访问它并将其包含在标题中。 http://docs.spring.io/spring-security/site/docs/3.2.0.CI-SNAPSHOT/reference/html/csrf.html
这怎么不可利用?例如,如果example.com在元标记中包含csrf标记,我是否可以创建一个恶意网站,其中包含一些可以调用example.com的javascript,然后解析响应,找到元标记,然后将令牌值注入我的恶意页面表单?
答案 0 :(得分:2)
CSRF令牌对每个会话都是唯一的。一旦生成,它只能使用一次,与特定会话相关联。
恶意的人可以获得一个,但它将特定于他们的浏览器会话。简而言之,他们只会用它来开发自己。
至于通过JavaScript产生攻击,它实际上是一个与CSRF分开的问题。 CSRF是一种类似this one from Wikipedia的攻击:
<img src="http://bank.example.com/withdraw?account=Alice&amount=1000000&for=Mallory"/>
防范恶意JavaScript是一个不同的故事。通过清除用户输入,iframe
沙盒和依赖XSS,网站可以保护自己免受same-origin policy和其他类型的JavaScript注入攻击。
<强> TL; DR 强>
如果您在网站上运行其他人不受信任的JavaScript,那么您遇到的问题比CSRF更严重。
答案 1 :(得分:2)
由于http://en.wikipedia.org/wiki/Same-origin_policy,在chuck.com的Alice浏览器中运行的脚本无法读取carol.com的内容。
chuck.com上的脚本可以POST到carol.com,但它无法读取和解析其内容。