gpt4 book ai didi

ASP.NET MVC 安全和 IIS allowSubDirConfig 配置

转载 作者:行者123 更新时间:2023-12-04 14:33:21 27 4
gpt4 key购买 nike

我得知在 general Microsoft recommendation 之后我们的网络服务器将被重新配置;除其他事项外 allowSubDirConfig setting应设置为 false。因此,我们的 ASP.NET 应用程序必须在其根级别使用单个 Web.config(顺便说一下,这对我们的应用程序来说是完全可以的)。

但是,ASP.NET MVC 为 Views 目录使用“非根级”配置文件(默认情况下!),其中包含一个简单(但很重要?)与 Web 服务器相关的部分:

<system.webServer>
<handlers>
<remove name="BlockViewHandler" />
<add name="BlockViewHandler"
path="*"
verb="*"
preCondition="integratedMode"
type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>

关于 a post by Phil Haack这是安全相关的,因此很重要。

由于其他 .NET Framework 相关部分 still work ,因为 ASP.NET 运行时不遵守 allowSubDirConfig 设置,ASP.NET MVC 应用程序仍然可以工作。所以忽略的 Web 服务器配置在一般使用过程中并没有真正引起注意,尽管我对此有一种不好的感觉。

这不是个糟糕的主意吗?如果 Web 服务器以这种方式配置(根据推荐),那些 ASP.NET MVC 应用程序有多脆弱?

最佳答案

HttpNotFoundHandler 有一个路径属性,这意味着您可以将它添加到根配置文件并指向 Views 文件夹的路径,并且您不会以任何方式改变安全级别:

  <system.webServer>
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="Views/*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>

这将适用于基本的 web.config 文件,但如果您将添加/删除处理程序作为应用程序的一部分,请当心。 BlockViewHandler 之前的处理程序仍然可以从 Views 子文件夹传送内容(但我相信 Views 目录中的标准 web.config 也是这种情况,除非您专门删除那里的处理程序)。

一般来说,即使 Views 子目录中缺少/忽略 system.webServer 部分,IIS 也不会提供 Views 文件夹中的 .cshtml 文件(除非特别允许)。

但它会提供其他文件(例如 html、css、js),这些文件将被 BlockViewHandler 处理程序阻止,这可以被视为降低安全性。

关于ASP.NET MVC 安全和 IIS allowSubDirConfig 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28019590/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com