如何编辑web.config以停止提供.NET Web应用程序的特定文件类型

Ser*_*sus 5 .net asp.net iis web-config

我想阻止用户通过浏览器访问某种类型的文件.例如,IIS服务器默认阻止访问.config和.vb文件,并显示错误消息"您已请求的页面类型未被提供,因为它已被明确禁止",并且我想添加其他文件这种行为的类型.

我可以添加到应用程序的web.config文件中吗?我宁愿不通过使用该<authorization>元素阻止目录访问来处理它.

Ser*_*sus 11

在IIS 7+中,请求筛选可以在应用程序级别完成.在web.config中添加以下代码:

<system.webServer>
    <security>
        <requestFiltering>
            <fileExtensions>
                <add fileExtension=".vbs" allowed="false" />
            </fileExtensions>
        </requestFiltering>
    </security>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

对于IIS 6,上述操作无效,但您可以模仿.cs文件等页面的默认阻止行为,尽管您可能需要在服务器端进行更改.首先,将以下内容添加到您的应用程序的web.config中:

<system.web>
    <httpHandlers>
        <add path="*.vbs" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
    </httpHandlers>
</system.web>
Run Code Online (Sandbox Code Playgroud)

如果asp.net设置为处理该文件类型,如.cs,那么你就完成了.但是,如果您要阻止的文件类型由IIS处理,而不是asp.net(如.vbs),则这还不够.你将不得不在IIS管理器中修改文件扩展名映射为显示在这里.