我可以在 web.config 位置路径属性中使用通配符吗?

问题描述 投票:0回答:3

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

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

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

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

如果我拒绝访问各个文件,它会起作用,但这个解决方案对我来说并没有什么好处,因为我事先不知道所有 .xml 文件。

authentication iis-7 web-config
3个回答
10
投票

试试这个:

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

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


6
投票

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

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

0
投票

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

<location path="api/v1/foo">
  <system.web>
    <authorization>
      <!--All anonymous users access to the virtual path api-->
      <allow users="*" />
    </authorization>
  </system.web>
  <!-- ... -->
</location>

这允许匿名访问

FooController
内的所有操作。

© www.soinside.com 2019 - 2024. All rights reserved.