2013-09-16 26 views
5

在IIS(6或7)中,当禁用目录浏览时,IIS在检测到尝试浏览目录(例如“http://mydomain.com/folder”)时返回“403 - 禁止” 。配置IIS为目录浏览尝试返回404

有没有什么办法可以配置IIS为目录浏览尝试返回“404 - 未找到”错误而不是“403”?

这是一个asp.net webforms网站。

我们网站的安全扫描发现,返回“403”可能有助于恶意人员映射我们的网站;之前没有想到这一点,但我不得不承认这是有道理的。

+0

I'm不是100%舒尔,但我认为这是题外话,属于[超级用户](http://superuser.com/) – makim

+3

我推荐ServerFault而不是超级用户,因为它是一个服务器配置问题 –

+0

我发布的问题在ServerFault根据你的建议,谢谢,不知道那个网站。 –

回答

1

我找不到配置IIS的方法,但是我找到了使用asp.net通用处理程序的解决方法(http://forums.asp.net/p/1478217/3453189.aspx,向下滚动到gvlahakis的答案)。

首先,创建一个通用的处理程序,返回404:

public class DirectoryBrowsingAttempt : IHttpHandler 
{ 
    public bool IsReusable {get {return true;} 
    public void ProcessRequest(HttpContext context) {context.Response.StatusCode = 404;} 
} 

其次,添加标签到web.config中一点目录浏览尝试上述处理程序,一个用于您需要保护的每个文件夹,在httpHandlers和system.webServer部分。下面的标签保护名为“js”的文件夹不在根目录中。

<httpHandlers> 
    <add verb="*" path="js/*" validate="false" type="MyNameSpace.DirectoryBrowsingAttempt"/> 
</httpHandlers> 
<system.webServer> 
<handlers> 
    <add name="NoAccess" verb="*" path="js/*" preCondition="integratedMode" type="MyNameSpace.DirectoryBrowsingAttempt"/> 
</handlers> 

此解决方案具有不同的行为在IIS 6与IIS 7例如,我保护的所包含的这种方式,网站的图片文件夹:在IIS 6还提供包含图像此文件夹中网页(期望的行为,我只想阻止目录浏览尝试); IIS 7阻止了它们。

可能有方法可以使用web.config中的“位置”选项卡来允许通过覆盖默认图像处理程序来提供图像,但我不希望在兔子洞中走得太远。

2

在IIS(7及更高版本)中转到请求筛选,并且有一个名为隐藏段的选项卡。你可以只添加你要隐藏的目录的名称,现在会返回一个404

+1

我尝试了这种方法,它工作。但在我的情况下,我只想阻止目录浏览尝试,而不是目录中的文件请求。这种方法对此不起作用,因为它阻止了目录中的所有内容。 – witters

4

如果您正在使用ASP.Net MVC添加下面的处理程序进入的web.config

<system.webServer> 
    <handlers> 
    <add name="StopDirectoryBrowsing" path="*." resourceType="Directory" verb="*" 
     preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" /> 
    </handlers> 
<system.webServer> 
+0

该解决方案适用于VS 2015 ASHX SPA解决方案(即不是MVC解决方案),无需编写任何代码或在任何地方列出目录名称。 – user2728841