CSRF 令牌超时

CSRF token timeout

此页面描述了一个用例来解释 CSRF 攻击 (16.1):

https://docs.spring.io/spring-security/site/docs/current/reference/html/csrf.html

但是如果用户确实登录了银行的网站,那么邪恶的网站是不是可以发出 GET 请求来获取新的 CSRF 令牌,并制作一个 POST 而不需要有用户吗?

答案必须是否定的,否则CSRF token就没有用了,但我不明白为什么?

答案是"no",原因是同源策略。

SOP 表示来自 evil.com 的页面无法 读取 对它可能发送给 example.com 的请求的任何响应。大多数直接发送请求的方式都会被浏览器拦截(SOP),但也有很多变通方法。例如,evil.com 可以发送

  • 通过嵌入 <img><script><css> 并设置 src="http://example.com/path"(或 <a href="http://example.com/path">)来获取请求。
  • POST 通过提交表单请求。

由于 evil.com 无法读取任何响应,因此无法读取 CSRF 令牌。