簡體   English   中英

如何編輯 web.config 以停止為 .NET Web 應用程序的特定文件類型提供服務

[英]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,以輕松地使一個文件夾或多或少的寬松。

鏈接: http : //msdn.microsoft.com/fr-fr/library/b6x6shw7.aspx

為什么要將非 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/learn/get-started/planning-your-iis-architecture/introduction-to-applicationhostconfig

請求過濾部分: http : //www.iis.net/configreference/system.webserver/security/requestfiltering

文件將顯示為 404 返回碼。

*注意:由於此配置位於根級別,因此更改適用於該服務器上運行的所有應用程序。

您必須設置 IIS 才能通過 .NET 管道運行這些文件請求。 更好的策略是從一開始就阻止來自 IIS 的項目。 這樣,您就沒有通過 .NET 管道運行 PDF 來阻止文件的開銷。

請求過濾應該這樣做。 它沒有明確的擴展名。 您可以在 URL 上使用 Regex。

IIS 7.0 請求過濾和 URL 重寫

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM