C# 确实<;pages validateRequest=";假/&燃气轮机;在Web.config中仍然重要吗?
ASP.NET MVC应用程序,目标框架:.NET framework 4.7.2 非常老的项目,有一堆遗留代码 “视图”文件夹中的Web.config文件包含以下部分:C# 确实<;pages validateRequest=";假/&燃气轮机;在Web.config中仍然重要吗?,c#,asp.net,asp.net-mvc,asp.net-mvc-4,web-config,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Web Config,ASP.NET MVC应用程序,目标框架:.NET framework 4.7.2 非常老的项目,有一堆遗留代码 “视图”文件夹中的Web.config文件包含以下部分: <system.web> <!-- Enabling request validation in view pages would cause validation to occur after the input has already been processed by the
<system.web>
<!--
Enabling request validation in view pages would cause validation to occur
after the input has already been processed by the controller. By default
MVC performs request validation before a controller processes the input.
To change this behavior apply the ValidateInputAttribute to a
controller or action.
-->
<pages validateRequest="false" />
</system.web>
该部分在几年前项目创建时自动生成
如果现在要为.NET Framework 4.7.2创建ASP.NET MVC项目,则Web.config将丢失上面自动生成的部分
我们还需要这个pages元素和validateRequest=“false”属性吗
或者在从网页到.NET Framework 4.7.2的MVC的过程中,出现了中断性更改,取消了此设置的需要?默认情况下,MVC将防止潜在的危险请求。 要发布任何类型的脚本或HTML,您需要添加以下内容之一: 1-控制器操作方法上的ValidateInput属性
[ValidateInput(false)]
public ActionResult AddEntry(MyModel model) {
:
}
2-模型属性上的AllowHtml属性
public class MyModel
{
[AllowHtml]
public string HtmlContent { get; set; }
}
Web配置的页面部分是WebForms的一部分
“指令[在pages元素中]指定页面和用户控件编译器在处理ASP.NET Web表单页面(.aspx)和用户控件(.ascx)文件时使用的设置。”请参阅()
是WebForms遗留下来的,MVC应用程序不再需要它
因此,因为MVC没有使用任何这些,所以现在它是无关紧要的。当然,除非您的应用程序混合了MVC和Webforms逻辑
底线
理想情况下,在使用WebForms时,您不应该将validateRequest设置为false,或者在MVC应用程序中使用AllowHtml或ValidateInput(false),因为这三个漏洞都会在代码中打开安全漏洞
那么你应该把它去掉吗?对它本来可能不应该出现在那里。MVC在自动生成评论的日期阻止了危险的请求。尽管Web.config中故意需要它。现在发生了什么事?他们是否改变了网页生成或网页元素仅用于WebForms,现在我们不将其与MVC?更新的说明一起使用。
<pages validateRequest="false" />