共用方式為


如何使用要求篩選設定 WebDAV

羅伯特·麥克默里

簡介

Microsoft 發行了一個新的 WebDAV 擴充模組,在 Windows Server® 2008 上完全重寫了 網際網路資訊服務 7.0 (IIS 7.0)。 這個新的 WebDAV 擴充模組結合了許多新功能,可讓 Web 作者比之前更妥善地發佈內容,並提供 Web 系統管理員更多的安全性和設定選項。 Microsoft 已發行適用於 Windows Server® 2008 的 WebDAV 擴充模組更新,提供共用和獨佔鎖定支援,以防止因為覆寫而遺失的更新。

IIS 7.0 提供數個絕佳的新安全性功能,包括 IIS 7.0 新的要求篩選。 對於熟悉舊版 IIS UrlScan 的 IIS 使用者,IIS 7.0 中的要求篩選功能就像是內建 URLScan。

新的 WebDAV 模組和要求篩選旨在一起運作,本檔會逐步引導您設定與 WebDAV 相關的要求篩選設定與 WebDAV 設定,以設定安全的發佈環境。 請注意,如果您使用 IIS 管理員 UI 來設定 WebDAV,則要求篩選設定會自動更新,而且您不需要遵循本文中的步驟。

必要條件

需要下列專案才能完成本文中的程式:

  • IIS 7.0 必須安裝在您的伺服器上,而且必須設定下列專案:

    • IIS 7.0 安裝所建立的默認網站仍必須存在。
    • 必須安裝要求篩選功能。
  • 必須安裝新的 WebDAV 擴充模組。 如需新 WebDAV 模組安裝的相關信息,請參閱下列檔:

  • 如何使用 AppCmd 的知識很有説明。 如需使用要求篩選的詳細資訊,請參閱下列檔:

注意

您必須確定您遵循本檔中使用完整系統管理許可權的步驟。 使用下列兩種方法之一,最好完成此作業:

  • 使用本機「系統管理員」帳戶登入您的電腦。
  • 如果您使用具有非本機「系統管理員」帳戶之系統管理許可權的帳戶登入,請使用 [以 管理員 istrator 執行身分] 選項開啟 IIS 管理員和所有命令提示字元會話。

需要上述條件,因為 Windows Server 2008 中的用戶帳戶控制 (UAC) 安全性元件會防止系統管理存取 IIS 7.0 的組態設定。 如需 UAC 的詳細資訊,請參閱下列檔:

基本要求篩選概念

IIS 7.0 中的要求篩選包含根據下列參數篩選要求:

  • 擴展名
  • 隱藏區段
  • HTTP 指令動詞
  • 要求限制
  • URL 序列

所有這些要求篩選功能都可能會影響透過 WebDAV 上傳或下載的內容,但某些功能可以設定為與 WebDAV 合作運作。

下列清單描述哪些功能可以設定為使用 WebDAV:

  • 下列功能一律會影響 WebDAV 要求:

    • 要求限制
    • URL 序列
  • 下列功能預設會影響 WebDAV 要求,但可以設定為略過 WebDAV 要求:

    • 擴展名
    • 隱藏區段
    • HTTP 指令動詞

例如,您可以將伺服器設定為允許「.htm」和「.php」檔案的非 WebDAV 要求,同時封鎖存取「.mdb」和「.config」檔案,同時仍允許 WebDAV 要求存取封鎖的內容。

注意

WebDAV 要求需要驗證。

您可以使用下列其中一種方法來編輯要求篩選設定:

  • 使用作為 IIS 7.0 管理員 istration Pack 一部分提供的用戶介面
  • 從命令行使用AppCmd
  • 編輯您的應用程式Host.config 檔案
  • 使用 Microsoft.Web。從 .NET 應用程式或 Windows PowerShell 管理員 istration

本逐步解說的其餘資訊將示範如何使用命令行中的AppCmd,同時顯示applicationHost.config檔案中產生的組態設定可能看起來的樣子。

注意

本檔未涵蓋所有可使用要求篩選設定的功能。 如需設定其他要求篩選選項的詳細資訊,請參閱下列主題:

設定要求篩選和 WebDAV

篩選擴展名

某些擴展名,例如 「config」 和 「.asax」 會受到預設要求篩選 檔案Extensions 集合的保護。 您可以將其他專案新增至擴展名清單,以允許或封鎖 HTTP 要求,而且您可以控制此清單是否適用於 WebDAV 要求。 在此範例中,您將使用AppCmd區塊「.txt」檔案進行存取,即使這些檔案通常可供存取,而且您會指定WebDAV要求能夠存取所有封鎖的擴展名。

  1. 以完整系統管理許可權開啟命令提示字元,並將目錄變更為 InetSrv 資料夾:

    cd "%WinDir%\System32\InetSrv"
    
  2. 使用下列語法來檢視現有的要求篩選規則:

    AppCmd list config "Default Web Site/" /section:system.webServer/security/requestFiltering
    
  3. 將特定擴展名新增至 fileExtensions 集合,並使用下列語法為允許的屬性指定 false,以封鎖對 “.txt” 檔案存取:

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+fileExtensions.[fileExtension='.txt',allowed='false'] /commit:apphost
    
  4. 使用下列語法將 fileExtensions 集合的 applyToWebDAV 屬性設定false,以允許 WebDAV 存取所有封鎖的文件類型:

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /fileExtensions.applyToWebDAV:false /commit:apphost
    

完成上述步驟之後,applicationHost.config 檔案的 fileExtensions 區段中產生的程式代碼應該類似下列範例:

<requestFiltering>
   <fileExtensions applyToWebDAV="false">
      <add fileExtension=".txt" allowed="false" />
   </fileExtensions>
</requestFiltering>

注意:

  • 您可以使用上述步驟,藉由將擴展名新增至 fileExtensions 集合來封鎖對其他擴展名的存取,也可以藉由指定 allowed 屬性的 true 來修改語法以允許特定檔案。

  • 您可以使用下列語法,將 fileExtensions 集合的 allowUnlisted 屬性設定為 false,以封鎖所有未知的擴展名:

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /fileExtensions.allowUnlisted:false /commit:apphost
    

    注意

    設定此選項需要您特別新增每個擴展名,才能由非 WebDAV 要求存取。

  • 您可以使用上述步驟來封鎖 WebDAV 要求的存取,方法是為 applyToWebDAV 屬性指定 true

篩選隱藏區段

默認要求篩選 hiddenSegments 集合會隱藏某些檔案區段,例如 “web.config” 和 “App_code”。 您可以將其他專案新增至檔案區段清單,以便針對 HTTP 要求隱藏這些專案,而且您可以控制此清單是否適用於 WebDAV 要求。 在此範例中,您將使用 AppCmd 將 「include」 區段從 HTTP 要求隱藏,即使它通常可見,您也會指定 WebDAV 要求能夠存取所有隱藏的檔案區段。

  1. 以完整系統管理許可權開啟命令提示字元,並將目錄變更為 InetSrv 資料夾:

    cd "%WinDir%\System32\InetSrv"
    
  2. 使用下列語法,將特定專案新增至 hiddenSegments 集合,以封鎖對「include」 區段的存取:

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+hiddenSegments.[segment='include'] /commit:apphost
    
  3. 使用下列語法將 hiddenSegments 集合的 applyToWebDAV 屬性設定false,以允許 WebDAV 存取所有封鎖的文件類型:

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /hiddenSegments.applyToWebDAV:false /commit:apphost
    

完成上述步驟之後,applicationHost.config 檔案的 hiddenSegments 區段中產生的程式代碼應該類似下列範例:

<requestFiltering>
   <hiddenSegments applyToWebDAV="false">
      <add segment="include" />
   </hiddenSegments>
</requestFiltering>

注意:

  • 您可以使用上述步驟來隱藏其他檔案區段,方法是將它們新增至 hiddenSegments 集合。
  • 您可以使用上述步驟來封鎖 WebDAV 要求的存取,方法是為 applyToWebDAV 屬性指定 true

篩選 HTTP 動詞

默認要求篩選 動詞 集合允許所有未列出的 HTTP 動詞動詞,即使某些動詞可能未對應到特定的 HTTP 處理程式也一樣。 您可以將專案新增至此清單,以指定應該允許或封鎖哪個 HTTP 動詞,而且您可以控制此列表是否適用於 WebDAV 要求。 在此範例中,您將使用AppCmd來封鎖 HTTP要求的 “DELETE” 和 “PUT” 動詞,並指定 WebDAV 要求將能夠使用這些動詞。

  1. 以完整系統管理許可權開啟命令提示字元,並將目錄變更為 InetSrv 資料夾:

    cd "%WinDir%\System32\InetSrv"
    
  2. 使用下列語法,將特定專案新增至動詞集合,併為允許的屬性指定 false,以封鎖對 “DELETE” 動詞動詞的存取:

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+verbs.[verb='DELETE',allowed='false'] /commit:appHost
    
  3. 使用下列語法,將另一個特定專案新增至動詞集合,併為允許的屬性指定 false,以封鎖對 “PUT” 動詞的存取:

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+verbs.[verb='PUT',allowed='false'] /commit:appHost
    
  4. 使用下列語法將 verbs 集合的 applyToWebDAV 屬性設定false,以允許 WebDAV 存取所有 HTTP 動詞命令:

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /verbs.applyToWebDAV:false /commit:appHost
    

完成上述步驟之後,applicationHost.config 檔案動 區段中產生的程式代碼應該類似下列範例:

<requestFiltering>
   <verbs applyToWebDAV="false">
      <add verb="DELETE" allowed="false" />
      <add verb="PUT" allowed="false" />
   </verbs>
</requestFiltering>

注意:

  • 您可以使用上述步驟,藉由將其他 HTTP 動詞新增至詞集合來封鎖其他 HTTP 動詞,或者您可以藉由指定allowed屬性的 true 來修改語法以允許特定動詞。

  • 您可以使用下列語法,將 verbs 集合的 allowUnlisted 屬性設定為 false,以封鎖所有未知的 HTTP 動詞動詞:

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /verbs.allowUnlisted:false /commit:appHost
    

    注意

    設定此選項需要您特別新增每個 HTTP 動詞,才能由非 WebDAV 要求存取。

  • 您可以使用上述步驟來封鎖 WebDAV 要求的存取,方法是為 applyToWebDAV 屬性指定 true

摘要

本文件已說明下列概念:

相關資訊

如需使用 WebDAV 的其他資訊,請參閱下列文章: