[英]How to edit web.config to stop serving a specific file type of a .NET web app
我想阻止用戶通過瀏覽器訪問某種類型的文件。 例如,IIS 服務器默認阻止訪問 .config 和 .vb 文件,給出錯誤消息“您請求的頁面類型未被提供,因為它已被明確禁止”,我想添加其他文件這種行為的類型。
有什么可以添加到應用程序的 web.config 文件中的嗎? 我寧願不通過使用<authorization>
元素阻止目錄訪問來處理它。
在 IIS 7+ 中,可以在應用程序級別完成請求過濾。 在 web.config 中添加以下代碼:
<system.webServer>
<security>
<requestFiltering>
<fileExtensions>
<add fileExtension=".vbs" allowed="false" />
</fileExtensions>
</requestFiltering>
</security>
</system.webServer>
對於 IIS 6,上面的方法不起作用,但您可以模仿 .cs 文件等頁面存在的默認阻止行為,盡管您可能必須在服務器端進行更改。 首先,將以下內容添加到您的應用程序的 web.config 中:
<system.web>
<httpHandlers>
<add path="*.vbs" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
</httpHandlers>
</system.web>
如果將 asp.net 設置為處理該文件類型,例如 .cs,那么您就完成了。 但是,如果您要阻止的文件類型由 IIS 處理,而不是由 asp.net(如 .vbs)處理,則這還不夠。 你必須要在IIS管理器更改文件擴展名映射為顯示在這里。
您可以嘗試在 Web.Config 中使用location
節點
<location path=".">
<system.web>
<authorization>
<!-- Order and case are important below -->
<allow roles="Admin"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
使用路徑"."
將應用於當前文件夾和所有嵌套文件夾。 可以提供更具體的路徑。 您還可以在文件夾層次結構中嵌套 web.configs,以輕松地使一個文件夾或多或少的寬松。
為什么要將非 Web 服務的文件存儲在通過 IIS 可用的文件夾中? 我通常做這樣的事情:
\www.mywebsite.com\wwwroot\
\www.mywebsite.com\secureimages\
\www.mywebsite.com\virutaldirectories\
在 IIS 中,我的 wwwroot 是我網站的根目錄,而我的 MVC 應用程序是通過This.File來自 secureimages 目錄的服務圖像,因此除非我以編程方式允許它,否則圖像不可用。 我假設您的程序也提供文件,如果是這樣,這些文件不需要以任何方式提供給 IIS 直接用作文件。
如果您使用的是 IIS 7,這可以在 ApplicationHost.config 級別上完成。
請求過濾部分: http : //www.iis.net/configreference/system.webserver/security/requestfiltering
文件將顯示為 404 返回碼。
*注意:由於此配置位於根級別,因此更改適用於該服務器上運行的所有應用程序。
您必須設置 IIS 才能通過 .NET 管道運行這些文件請求。 更好的策略是從一開始就阻止來自 IIS 的項目。 這樣,您就沒有通過 .NET 管道運行 PDF 來阻止文件的開銷。
請求過濾應該這樣做。 它沒有明確的擴展名。 您可以在 URL 上使用 Regex。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.