是否有可能是恶意网站通过发送get请求获取到Anti Forgery Token?

Is it possible a malicious website access to Anti Forgery Token by sending a get request?

在跨站请求伪造:

提交恶意网站上的表单后,您将直接向网络应用程序发送 HTTP 请求,并且由于您已在网站上进行身份验证,因此可以接受交易。

攻击者通过伪造请求并使用您作为传递该请求的信使来使用您自己的身份验证。

为了防止它,程序员使用了一个防伪令牌,这个令牌是一个包含随机值的字符串,除了你的 HTML 表单之外,令牌被放置在你的 cookie 中。

当 Web 应用程序收到请求时,它会验证表单是否包含防伪令牌并且它是否与存储在您的 cookie 中的令牌相匹配。恶意站点无法看到您的网站在客户端设置的令牌,如果没有此信息,XSRF 攻击就会停止。

所以我的问题是:

是否有可能恶意网站通过 JavaScript 发送获取请求,并在发送伪造 post 请求之前跟踪来自隐藏输入的对反伪造令牌的响应访问?如果是,如何预防?

这在现代浏览器上是不可能的,除非您从服务器明确允许它。

你说的是 CORS 所以如果你在 evil.com 并且页面试图通过 JS XmlHttpRequest 或新的 Fetch API 获取 your-page.io,为了读取 XSRF 令牌,现代浏览器将首先发送带有来源的 OPTION 请求。如果 evil.com 允许该请求,则服务器可以使用 Access-Control-Allow-Origin 进行响应,在这种情况下,您真的可以窃取 XSRF 令牌。但是,如果服务器不响应 Access-Control-Allow-Origin,浏览器将阻止 evil.com 上的 JavaScript 获取结果,并且您无法窃取令牌。