元标记中使用令牌的 CSRF 保护 - 为什么它不能被盗
CSRF Protection with tokens in meta tag - why can't it be stolen?
能够在 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,但无法读取和解析其内容。
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 为什么“;未定义的“;在JavaScript中结束循环
- 为什么这在IE中的工作方式与在Firefox中不同
- 知道为什么我的旋转木马不会自动更改图片吗
- 为什么会出现错误;未捕获的类型错误:undefined不是函数;
- 为什么在单独的函数中应用时转换会闪烁/断断续续(D3)
- 为什么在变形之前不缺少Fx
- 为什么JavaScript在for循环为3时向所有4发出警报
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- 为什么Airbnb风格指南说不鼓励依赖函数名称推断
- 为什么要使用0>javascript中的0
- 为什么无法在TypeScript中导出类实例
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 为什么我的d3.jsselectAll+过滤器没有过滤
- 为什么HTML5拖放的目标是孩子?(可排序列表)
- 为什么忽略了eval()代码中的语法错误
- 为什么在画布上画线;t出现
- 元标记中使用令牌的 CSRF 保护 - 为什么它不能被盗
- 为什么在实现事件时不使用IIFE来保护隐私?
- 为什么Javascript函数在从webpack编译后不受保护?