在IIS(6或7)中,当禁用目录浏览时,IIS会在检测到浏览目录的尝试时返回“403 -禁止”错误(例如“http://mydomain.com/folder“)。
有没有办法将IIS配置为在目录浏览尝试时返回“404 - Not Found”错误而不是“403”?
这是一个asp.net Web表单站点。
对我们站点的安全扫描发现,返回“403”可能会帮助恶意用户Map我们的站点;我以前没有想到这一点,但我不得不承认这是有道理的。
在IIS(6或7)中,当禁用目录浏览时,IIS会在检测到浏览目录的尝试时返回“403 -禁止”错误(例如“http://mydomain.com/folder“)。
有没有办法将IIS配置为在目录浏览尝试时返回“404 - Not Found”错误而不是“403”?
这是一个asp.net Web表单站点。
对我们站点的安全扫描发现,返回“403”可能会帮助恶意用户Map我们的站点;我以前没有想到这一点,但我不得不承认这是有道理的。
4条答案
按热度按时间l0oc07j21#
如果您使用的是ASP.NetMVC,请将以下处理程序添加到web.config中
pgpifvop2#
适用于我们的解决方案(IIS7):
1.禁用目录浏览=〉403
1.创建默认文档(default.htm或配置的任何默认文件名)=〉200
1.设置默认文档的文件属性为隐藏=〉404
yx2lnoni3#
在IIS(7及以上版本)中,进入请求过滤,有一个名为隐藏段的选项卡。你可以只添加你想隐藏的目录的名称,它现在会返回一个404。
but5z9lq4#
我找不到配置IIS的方法,但我找到了一个使用asp.net通用处理程序(http://forums.asp.net/p/1478217/3453189.aspx,向下滚动到gvlahakis的答案)的解决方法。
首先,创建一个返回404的通用处理程序:
其次,在web.config中添加标记,将目录浏览尝试指向上面的处理程序,在httpHandlers和system.webServer部分中,每个标记对应一个需要保护的文件夹。下面的标记保护根目录下名为“js”的文件夹。
此变通办法在IIS 6和IIS 7中的行为不同。例如,我以这种方式保护了一个包含站点图像的文件夹:IIS 6仍然将此文件夹中包含的图像传递到网页(所需的行为,我只是想阻止目录浏览尝试); IIS 7阻止了它们。
可能有一些方法可以使用web.config中的“location”选项卡,通过覆盖默认的图像处理程序来提供图像,但我不想深入到兔子洞那么远的地方。