C# ASPMVC-潜在危险的请求。从客户端检测到表单值

C# ASPMVC-潜在危险的请求。从客户端检测到表单值,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个ASP.NETMVC应用程序,然后我有一个表单,用户可以在其中创建用户和密码 用户收到以下消息时出错: A potentially dangerous Request.Form value was detected from the client (Password="1e.q<Tm6"). 潜在危险的请求。从客户端检测到表单值(Password=“1e.q是)。这是预期行为。出现错误的原因是,提交表单时,asp.met mvc框架将检查请求正文,以查看其是否包含任何潜在危险的H

我有一个
ASP.NETMVC
应用程序,然后我有一个表单,用户可以在其中创建用户和密码

用户收到以下消息时出错:

A potentially dangerous Request.Form value was detected from the client (Password="1e.q<Tm6").

潜在危险的请求。从客户端检测到表单值(Password=“1e.q是)。这是预期行为。出现错误的原因是,提交表单时,asp.met mvc框架将检查请求正文,以查看其是否包含任何潜在危险的HTML标记内容(考虑脚本注入。)。如果检测到任何危险内容,请求验证模块将抛出错误。这是出于设计考虑

您可以将属性应用于视图模型属性,以便请求验证框架在执行请求验证步骤时忽略此特定属性

public class LoginVM
{
   public string UserName { set;get;}

   [AllowHtml]
   public string Password { set; get; }
}
下面的文字来自官方msdn页面,我认为它是相关的

强烈建议您的应用程序显式检查所有 禁用请求验证以阻止脚本的模型 功绩


将控制器上的属性[ValidateInput(false)]用于解决方案:

[HttpPost]     
[ValidateInput(false)]
[ValidateAntiForgeryToken]
public ActionResult Create(Product model)

如果是发送到服务器的HTML类型的内容,请使用方法WebUtility.HtmlEncode对字符串进行编码,并使用WebUtility.htmlecode进行读取。

非常感谢,您认为在密码字段中允许HTML是一种好的做法吗?或者更好,因为我现在就有它?因为您不会显示在视图中的任何位置都可以使用密码,我认为在您的案例中使用此属性是很好的。
[HttpPost]     
[ValidateInput(false)]
[ValidateAntiForgeryToken]
public ActionResult Create(Product model)