Asp.Net 核心能防止隐藏的输入被篡改吗?中间件是否处理某种签名以防止篡改?__RequestVerificationToken
会照顾到这一点吗?
ASP.NET Core使用 ASP.NET Core Data Protection 实现防伪。当在Startup.ConfigureServices
中调用以下 API 之一时,防伪中间件将添加到依赖注入容器中:AddMvc、MapRazorPages、MapControllerRoute 和 MapBlazorHub。
当我们在<form>
元素中添加@Html.AntiForgeryToken
时,它会生成隐藏字段来存储防伪令牌。
<input name="__RequestVerificationToken" type="hidden" value="CfDJ8NrAkS ... s2-m9Yw">
令牌是唯一且不可预测的。服务器将与当前用户标识关联的令牌发送到客户端。客户端将令牌发送回服务器进行验证。如果服务器收到的令牌与经过身份验证的用户的身份不匹配,则请求将被拒绝。
有关更多详细信息,请查看 ASP.NET Core 中的防止跨站点请求伪造 (XSRF/CSRF( 攻击。