Asp.net mvc 恶意网站是否可能通过发送get请求访问防伪令牌?

Asp.net mvc 恶意网站是否可能通过发送get请求访问防伪令牌?,asp.net-mvc,csrf,antiforgerytoken,Asp.net Mvc,Csrf,Antiforgerytoken,应跨站点请求伪造: 当提交恶意网站上的表单时,HTTP请求将直接从您发送到web应用程序,并且由于您在web网站上经过身份验证,因此可以接受该交易 攻击者通过伪造请求并将您用作发送该请求的信使,对您使用自己的身份验证 为了防止出现这种情况,程序员使用了一个防伪令牌,该令牌是一个包含随机值的字符串,除了HTML表单之外,该令牌还放在cookie中 当web应用程序收到请求时,它会验证表单是否包含防伪令牌,以及是否与存储在cookie中的令牌匹配。恶意站点无法看到您的网站在客户端上设置的令牌,如果没

应跨站点请求伪造:

当提交恶意网站上的表单时,HTTP请求将直接从您发送到web应用程序,并且由于您在web网站上经过身份验证,因此可以接受该交易

攻击者通过伪造请求并将您用作发送该请求的信使,对您使用自己的身份验证

为了防止出现这种情况,程序员使用了一个防伪令牌,该令牌是一个包含随机值的字符串,除了HTML表单之外,该令牌还放在cookie中

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

因此,我的问题是:


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

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

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