【问题标题】:Can I use wildcards in the web.config location path attribute?我可以在 web.config 位置路径属性中使用通配符吗?
【发布时间】:2009-10-27 14:56:37
【问题描述】:

在 IIS 7 中,我尝试拒绝所有用户访问所有扩展名为 .xml 的文件。

我在 web.config 文件中尝试了以下设置:

<location path="*.xml">
    <system.web>
      <authorization>
        <deny users="*"/>
      </authorization>
    </system.web>
</location>

但随后获取任何文件都会导致内部服务器错误。

如果我拒绝访问单个文件,它会起作用,但这个解决方案不会给我带来太多好处,因为我事先并不知道所有 .xml 文件。

【问题讨论】:

标签: authentication iis-7 web-config


【解决方案1】:

试试这个:

<configuration>
    <system.web>
        <httpHandlers>
            <add path="*.xml" verb="*" 
             type="System.Web.HttpNotFoundHandler" />
        </httpHandlers>
    </system.web>
</configuration>

顺便说一句,您也可以将所有 xml 文件存储在 App_Data 目录中。在此目录中存储任何类型的文件都不会提供给网络。

【讨论】:

【解决方案2】:

另一种方法是使用请求过滤器:

<system.webServer>
  <security>
    <requestFiltering>
      <fileExtensions>
        <add fileExtension=".xml" allowed="false" />
      </fileExtensions>
    </requestFiltering>
  </security>
</system.webServer>

【讨论】:

    【解决方案3】:

    在寻找一种方法来更改应用于旧应用程序 (ASP.NET MVC) 中控制器内所有操作的安全性时,我偶然发现了这一点。我以为我需要某种通配符,但只需提供包含控制器段的路径就足够了:

    这允许匿名访问FooController 中的所有操作。

    【讨论】:

      猜你喜欢
      • 2012-06-30
      • 2011-10-20
      • 2014-11-04
      • 1970-01-01
      • 2015-03-07
      • 1970-01-01
      • 2012-09-19
      • 2011-05-01
      • 2014-03-14
      相关资源
      最近更新 更多