我读了这篇文章
Understanding CSRF – Simple Question
但我仍然不了解CSRF令牌如何阻止CSRF令牌.
使我困惑的主要问题是为什么攻击者可以向我的网站发出任何http请求,但他无法回读回复?
1,如果我在每个帖子请求之前发布一个http请求来获取令牌,攻击者也可以发出“获取令牌”请求来获取令牌.
2,如果我在.html页面加载时将令牌设置为隐藏输入,攻击者也可以发出“获取html”请求获取此.html页面并读取隐藏页面的值.
我只是不明白为什么攻击者可以提出请求而无法读取响应?
最佳答案 攻击者根本无法自己提出请求.他能做的就是欺骗他的受害者(或受害者的浏览器)提出这个要求.所以任何回复都会回到受害者的浏览器.
这里的问题是攻击者可以选择URL,即使没有看到任何响应,访问该URL也可能对受害者产生有害后果.
攻击者需要欺骗受害者提出请求(而不是仅仅访问URL)的原因是,如果受害者这样做,受害者的会话cookie也将被发送,因此它看起来像是经过身份验证的操作服务器.
If I set token to the hidden input while the .html page is loading, attacker also can make a “get html” request to get the this .html page and read the value of hidden page.
攻击者只能为自己的会话获取隐藏的输入,而不是受害者的会话.这个隐藏的输入将不同于会话(否则没有点).
CSRF令牌确保每个(关键)请求都包含必须与用户会话匹配的随机数据.这样,攻击者就无法猜测完整的URL是什么,并欺骗某人点击它.