【发布时间】:2018-02-04 23:18:33
【问题描述】:
我仍然不明白防伪令牌在 MVC 中是如何工作的。 来自MSDN。
防伪令牌
为帮助防止 CSRF 攻击,ASP.NET MVC 使用防伪令牌,也称为请求验证令牌。
- 客户端请求一个包含表单的 HTML 页面。
- 服务器在响应中包含两个令牌。一个令牌作为 cookie 发送。另一个放置在隐藏的表单域中。令牌是随机生成的,因此对手无法猜测值。
- 当客户端提交表单时,它必须将两个令牌都发送回服务器。客户端将 cookie 令牌作为 cookie 发送,并在表单数据中发送表单令牌。 (当用户提交表单时,浏览器客户端会自动执行此操作。)
- 如果请求不包含两个令牌,服务器将拒绝该请求。
下面是一个带有隐藏表单标记的 HTML 表单示例:
<form action="/Home/Test" method="post">
<input name="__RequestVerificationToken" type="hidden"
value="6fGBtLZmVBZ59oUad1Fr33BuPxANKY9q3Srr5y[...]" />
<input type="submit" value="Submit" />
我的问题是,因为我们可以通过查看源代码(在任何浏览器中按 F12)轻松找到隐藏的令牌值。然后我们可以通过转到开发人员工具(Ctrl-Shift-J 或工具 -> 开发人员工具)-> 控制台手动设置 cookie,然后您可以输入 javascript 命令:
document.cookie="keyofcookie=valueofcookie"?
然后我们手动将令牌设置为相同,从而禁用防伪技术?
【问题讨论】:
标签: asp.net asp.net-mvc cookies