你能解释一下ValidateAntiForgeryToken的目的并给我看ValidateAntiForgeryToken
MVC 4 中的例子吗?
我找不到任何解释此属性的示例?
你能解释一下ValidateAntiForgeryToken的目的并给我看ValidateAntiForgeryToken
MVC 4 中的例子吗?
我找不到任何解释此属性的示例?
MVC 的防伪支持将唯一值写入仅 HTTP cookie,然后将相同的值写入表单。提交页面时,如果 cookie 值与表单值不匹配,则会引发错误。
重要的是要注意该功能可以防止跨站点请求伪造。也就是说,来自另一个站点的表单发布到您的站点,以尝试使用经过身份验证的用户的凭据提交隐藏内容。攻击涉及欺骗登录用户提交表单,或者在页面加载时简单地以编程方式触发表单。
该功能不能防止任何其他类型的数据伪造或基于篡改的攻击。
要使用它,请使用属性装饰操作方法或控制器,并在发布到该方法的表单中ValidateAntiForgeryToken
调用 to 。@Html.AntiForgeryToken()
ValidateAntiForgeryToken 属性的基本目的是防止跨站请求伪造攻击。
跨站点请求伪造是一种从受信任用户的浏览器发送有害脚本元素、恶意命令或代码的攻击。有关这方面的更多信息,请访问 http://www.asp.net/mvc/overview/security/xsrfcsrf-prevention-in-aspnet-mvc-and-web-pages。
它使用简单,您需要使用 ValidateAntiForgeryToken 属性来装饰方法,如下所示:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult CreateProduct(Product product)
{
if (ModelState.IsValid)
{
//your logic
}
return View(ModelName);
}
它派生自 System.Web.Mvc 命名空间。
在您看来,添加此代码以添加令牌,以便在提交时用于验证表单。
@Html.AntiForgeryToken()
在 ASP.Net Core 中,防伪令牌会自动添加到表单中,因此@Html.AntiForgeryToken()
如果您使用 razor 表单元素或使用 IHtmlHelper.BeginForm 并且表单的方法不是 GET,则无需添加。
它将为您的表单生成类似于以下内容的输入元素:
<input name="__RequestVerificationToken" type="hidden"
value="CfDJ8HSQ_cdnkvBPo-jales205VCq9ISkg9BilG0VXAiNm3Fl5Lyu_JGpQDA4_CLNvty28w43AL8zjeR86fNALdsR3queTfAogif9ut-Zd-fwo8SAYuT0wmZ5eZUYClvpLfYm4LLIVy6VllbD54UxJ8W6FA">
并且当用户提交表单时,如果启用了验证,则在服务器端验证此令牌。
[ValidateAntiForgeryToken]
属性可用于操作。除非请求包含有效的防伪令牌,否则对应用了此过滤器的操作发出的请求将被阻止。
[AutoValidateAntiforgeryToken]
属性可用于控制器。此属性与 ValidateAntiForgeryToken 属性的工作方式相同,只是它不需要使用以下 HTTP 方法发出的请求的令牌:
GET HEAD OPTIONS TRACE
附加信息: docs.microsoft.com/aspnet/core/security/anti-request-forgery