在 IIS 7 中,我尝试拒绝所有用户访问扩展名为 .xml 的所有文件。
我在 web.config 文件中尝试了以下设置:
<location path="*.xml">
<system.web>
<authorization>
<deny users="*"/>
</authorization>
</system.web>
</location>
但是获取任何文件都会导致内部服务器错误。
如果我拒绝访问各个文件,它会起作用,但这个解决方案对我来说并没有什么好处,因为我事先不知道所有 .xml 文件。
试试这个:
<configuration>
<system.web>
<httpHandlers>
<add path="*.xml" verb="*"
type="System.Web.HttpNotFoundHandler" />
</httpHandlers>
</system.web>
</configuration>
顺便说一句,您也可以将所有 xml 文件存储在 App_Data 目录中。在此目录中存储任何类型的文件都不会提供给网络。
另一种方法是使用请求过滤器:
<system.webServer>
<security>
<requestFiltering>
<fileExtensions>
<add fileExtension=".xml" allowed="false" />
</fileExtensions>
</requestFiltering>
</security>
</system.webServer>
在寻找一种方法来更改应用于旧应用程序(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
内的所有操作。