2013-09-16 28 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