如何停止网站的目录浏览,但也允许默认文档

时间:2017-12-04 19:17:06

标签: asp.net web-config

当您尝试访问Web服务器上的目录时,您会收到403消息,而通常更希望获得404消息,这样您就不会给黑客一个文件夹存在的线索。

我以为我找到了这个问题的最终解决方案 - 将其添加到web.config system.webServer:

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

当您尝试访问目录时,这会正确引发404。

但遗憾的是,它会杀死顶层的默认文档机制。

任何人都可以建议上面的变体允许默认文档工作但仍保护子目录。

1 个答案:

答案 0 :(得分:1)

这实际上并没有更改返回的状态代码,但您可以使用<customErrors>重定向:

<customErrors mode="RemoteOnly" defaultRedirect="~/redirect/error-status.aspx">
    <error statusCode="403" redirect="~/redirect/access-denied.aspx" />
    <error statusCode="404" redirect="~/redirect/file-not-found.aspx" />
</customErrors>

如果您愿意,可以将每个状态代码重定向到一个页面。