【问题标题】:Does <pages validateRequest="false" /> in Web.config still matter?Web.config 中的 <pages validateRequest="false" /> 仍然重要吗?
【发布时间】:2019-08-16 18:34:25
【问题描述】:

ASP.NET MVC 应用程序,目标框架:.NET Framework 4.7.2

带有一堆遗留代码的相当古老的项目。

Views 文件夹中的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" 属性吗?

或者在从 WebPages 到 .NET Framework 4.7.2 的 MVC 的过程中,有一些重大更改取消了此设置的需要?

【问题讨论】:

    标签: c# asp.net asp.net-mvc asp.net-mvc-4 web-config


    【解决方案1】:

    默认情况下,MVC 会阻止潜在的危险请求。

    要发布任何类型的脚本或 HTML,您需要添加:

    1 - 控制器操作方法上的 ValidateInput 属性

    [ValidateInput(false)]
    public ActionResult AddEntry(MyModel model) {
        :
    }
    

    2 - 模型属性的 AllowHtml 属性

    public class MyModel 
    {
      [AllowHtml]
      public string HtmlContent { get; set; }
    }
    

    Web Config 的 Pages 部分是 WebForms 的东西

    "指令 [在 pages 元素中] 指定页面和用户控件编译器在处理 ASP.NET Web 窗体页面 (.aspx) 和用户控件 (.ascx) 文件时使用的设置。" 见 (here)

    <pages validateRequest="false" />
    

    是 WebForms 的遗留物,MVC 应用程序不再需要。

    因此,因为 MVC 不使用其中的任何内容,所以它现在是无关紧要的。当然,除非您的应用程序包含 MVC 和 Webforms 逻辑的混合。

    底线

    理想情况下,您不应该在使用 WebForms 时将 validateRequest 设置为 false,或者在 MVC 应用程序中使用 AllowHtmlValidateInput(false),因为所有您的代码中存在三个开放的安全漏洞。

    所以你应该删除它吗?是的。它可能一开始就不应该在那里。

    【讨论】:

    • MVC 在自动生成评论之日阻止了危险请求。尽管它是故意在 Web.config 中要求的。现在发生了什么事?他们是否更改了页面生成或仅 WebForms 需要页面元素,而现在我们不将它们与 MVC 一起使用?
    • 更新说明。
    猜你喜欢
    • 2011-11-13
    • 2012-08-25
    • 2011-02-11
    • 1970-01-01
    • 2011-05-21
    • 2017-04-14
    • 2015-09-06
    • 2011-07-25
    • 2012-10-01
    相关资源
    最近更新 更多