我仍然不了解Anti-forgery Token在MVC中是如何工作的。 来自MSDN。
防伪标记
为了帮助防止CSRF攻击,ASP.NET MVC使用了防伪令牌,也称为请求验证令牌。
以下是带有隐藏表单标记的HTML表单示例:
<form action="/Home/Test" method="post">
<input name="__RequestVerificationToken" type="hidden"
value="6fGBtLZmVBZ59oUad1Fr33BuPxANKY9q3Srr5y[...]" />
<input type="submit" value="Submit" />
我的问题是,因为我们可以通过查看源代码(任何浏览器中的F12)轻松找到隐藏的令牌值。然后我们可以通过转到开发人员工具(Ctrl-Shift-J或工具 - >开发人员工具)手动设置cookie - &gt;控制台和你可以输入javascript命令:
的document.cookie =&#34; keyofcookie = valueofcookie&#34;
然后我们手动设置令牌相同,以禁用Anti Forgery技术?
答案 0 :(得分:1)
该cookie是HttpOnly并且无法从javascript设置,因为所有最新的浏览器都实现了HttpOnly。此外,cookie令牌和表单令牌都包含不同的基本64加密信息。解密将是服务器端的东西。
Moreso,这些代币不是为了平等而进行比较的。它们相互补充数据。另外,您没有阅读完整的文章。 MVC也有自己的方法来验证令牌。
检查以下链接是否有帮助。
https://www.codeproject.com/Articles/793384/ASP-NET-Anti-Forgery-Tokens-internals
答案 1 :(得分:0)
正如documentation所说:
防伪令牌的工作原因是恶意页面无法读取 用户的令牌,由于同源策略。 (Same-origin policies 防止托管在两个不同站点上的文档访问每个站点 其他内容。所以在前面的例子中,恶意页面可以 向example.com发送请求,但无法读取响应。)
这意味着,由于上述政策,复制cookie值并将其用于任何其他位置将无效。