Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 确实<;pages validateRequest=";假/&燃气轮机;在Web.config中仍然重要吗?_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4_Web Config - Fatal编程技术网

C# 确实<;pages validateRequest=";假/&燃气轮机;在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

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 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" />