共用方式為


副檔名 < 檔案Extensions>

概觀

元素 <fileExtensions> 包含專案集合 <add> ,這些元素會根據每個 <add> 元素的定義方式,指定 IIS 將允許或拒絕的唯一副檔名。 藉由使用 <fileExtensions> 元素,您可以微調伺服器可供 Web 用戶端使用的內容類型。

例如,如果您將 allowUnlisted 屬性設定為 false,則不會包含在允許副檔名清單中的所有檔案要求都會遭到拒絕。 藉由使用 <clear> 元素,您可以清除已經定義的副檔名清單,然後只指定您想要允許的副檔名。

注意

當要求篩選因為副檔名遭拒而封鎖 HTTP 要求時,IIS 7 會將 HTTP 404 錯誤傳回給用戶端,並使用唯一的子狀態來記錄下列 HTTP 狀態,以識別拒絕要求的原因:

HTTP 子狀態 描述
404.7 拒絕副檔名

此子狀態可讓 Web 系統管理員分析其 IIS 記錄,並識別潛在的威脅。

相容性

版本 備註
IIS 10.0 未在 IIS 10.0 中修改專案 <fileExtensions>
IIS 8.5 未在 IIS 8.5 中修改專案 <fileExtensions>
IIS 8.0 未在 IIS 8.0 中修改專案 <fileExtensions>
IIS 7.5 未在 IIS 7.5 中修改專案 <fileExtensions>
IIS 7.0 <fileExtensions>集合的 <requestFiltering> 元素是在 IIS 7.0 中引進。
IIS 6.0 元素 <fileExtensions> 會取代 IIS 6.0 UrlScan [AllowExtensions][DenyExtensions] 功能。

安裝程式

IIS 7 和更新版本的預設安裝包含要求篩選角色服務或功能。 如果卸載要求篩選角色服務或功能,您可以使用下列步驟重新安裝它。

Windows Server 2012 或 Windows Server 2012 R2

  1. 在工作列上,按一下 [伺服器管理員]
  2. [伺服器管理員] 中,按一下 [管理] 功能表,然後按一下 [新增角色及功能]。
  3. 在 [ 新增角色及功能精 靈] 中,按 [ 下一步]。 選取安裝類型,然後按 [ 下一步]。 選取目的地伺服器,然後按 [ 下一步]。
  4. 在 [ 伺服器角色] 頁面上,依序展開 [ Web 服務器] ([IIS) ]、[ Web 服務器]、[ 安全性],然後選取 [ 要求篩選]。 按一下 [下一步] 。
    醒目提示並選取 [要求篩選] 選項的螢幕擷取畫面。 .
  5. 在 [選取功能] 頁面上,按 [下一步]
  6. 在 [確認安裝選項] 頁面上,按一下 [安裝]
  7. 在 [結果] 頁面上,按一下 [關閉]

Windows 8 或 Windows 8.1

  1. 在 [開始] 畫面上,將指標一路移至左下角,以滑鼠右鍵按一下 [開始] 按鈕,然後按一下[主控台]。
  2. 主控台中,按一下 [程式和功能],然後按一下 [開啟或關閉 Windows 功能]。
  3. 序展開 [Internet Information Services]、[ 萬維網服務]、[ 安全性],然後選取 [ 要求篩選]。
    醒目提示並選取 [要求篩選] 資料夾的螢幕擷取畫面。
  4. 按一下 [確定]。
  5. 按一下 [關閉] 。

Windows Server 2008 或 Windows Server 2008 R2

  1. 在工作列上,按一下 [開始],指向 [系統管理工具],然後按一下[伺服器管理員]。
  2. [伺服器管理員階層] 窗格中,展開 [角色],然後按一下 [Web 服務器] (IIS)
  3. 在 [ Web Server (IIS) ] 窗格中,捲動至 [ 角色服務 ] 區段,然後按一下 [ 新增角色服務]。
  4. 在 [新增角色服務精靈] 的 [選取角色服務] 頁面上,選取 [要求篩選],然後按 [下一步]。
    [新增角色服務精靈] 的螢幕擷取畫面
  5. 在 [確認安裝選項] 頁面上,按一下 [安裝]
  6. 在 [結果] 頁面上,按一下 [關閉]

Windows Vista 或 Windows 7

  1. 在工作列上,按一下 [開始],然後按一下[主控台]。
  2. 主控台中,按一下 [程式和功能],然後按一下[開啟或關閉 Windows 功能]。
  3. 依序展開 [Internet Information Services]、[ World Wide Web 服務] 和 [ 安全性]。
  4. 選取 [ 要求篩選],然後按一下 [ 確定]。
    [選取角色服務精靈] 的螢幕擷取畫面,其中顯示已醒目提示並選取 [要求篩選] 資料夾。

作法

IIS 7.0 使用者的注意事項:本節中的某些步驟可能需要您安裝適用于 IIS 7.0 的 Microsoft 系統管理元件,其中包含用於要求篩選的使用者介面。 若要安裝適用于 IIS 7.0 的 Microsoft 系統管理元件,請參閱下列 URL:

如何拒絕存取特定副檔名

  1. 開啟 [Internet Information Services (IIS) 管理員

    • 如果您使用 Windows Server 2012 或 Windows Server 2012 R2:

      • 在工作列上,依序按一下 [伺服器管理員]、[工具],然後按一下 [Internet Information Services (IIS) Manager]。
    • 如果您使用 Windows 8 或 Windows 8.1:

      • 按住Windows鍵,按字母X,然後按一下[主控台]。
      • 按一下 [系統管理工具],然後按兩下 [ Internet Information Services (IIS) Manager]。
    • 如果您使用 Windows Server 2008 或 Windows Server 2008 R2:

      • 在工作列上,按一下 [ 開始],指向 [ 系統管理工具],然後按一下 [ Internet Information Services (IIS) 管理員]。
    • 如果您使用 Windows Vista 或 Windows 7:

      • 在工作列上,按一下 [開始],然後按一下[主控台]。
      • 按兩下 [系統管理工具],然後按兩下 [ Internet Information Services] (IIS) Manager
  2. 在 [ 連線] 窗格中,移至您要修改要求篩選設定的連線、月臺、應用程式或目錄。

  3. 在 [ 首頁] 窗格中,按兩下 [ 要求篩選]。
    [預設網站首頁] 窗格的螢幕擷取畫面,其中顯示已醒目提示 [要求篩選] 選項。

  4. 在 [要求篩選] 窗格中,按一下 [副檔名] 索引標籤,然後按一下 [動作] 窗格中的[拒絕副檔名...]。
    [要求篩選] 窗格的螢幕擷取畫面,其中顯示 [拒絕副檔名] 選項。

  5. 在 [ 拒絕副檔名 ] 對話方塊中,輸入您想要封鎖的副檔名,然後按一下 [ 確定]。
    [拒絕副檔名] 對話方塊的螢幕擷取畫面,其中顯示 [O K] 選項。 例如,若要防止存取副檔名為 .inc 的檔案,您可以在對話方塊中輸入 「inc」。

組態

屬性

屬性 描述
allowUnlisted 選擇性的 Boolean 屬性。

指定網頁伺服器是否應該處理副檔名未列出的檔案。 如果您將此屬性設定為 true,則必須列出您想要拒絕的所有副檔名。 如果您將此屬性設定為 false,則必須列出您想要允許的所有副檔名。

預設值是 true
applyToWebDAV 選擇性的 Boolean 屬性。

指定這些設定是否也應該套用至 WebDAV 要求。

子元素

元素 描述
add 選擇性項目。

將副檔名新增至副檔名的集合。
clear 選擇性項目。

<fileExtensions> 集合中移除副檔名的所有參考。
remove 選擇性項目。

從集合中移除副檔名的 <fileExtensions> 參考。

組態範例

下列範例Web.config檔案會設定兩個選項。 它會設定要求篩選,以允許 WebDAV 存取所有副檔名,並將 IIS 設定為拒絕存取副檔名為 .inc 的檔案,這有時會當做應用程式的包含檔案使用。

<configuration>
   <system.webServer>
      <security>
         <requestFiltering>
            <fileExtensions applyToWebDAV="false">
               <add fileExtension=".inc" allowed="false" />
            </fileExtensions>
         </requestFiltering>
      </security>
   </system.webServer>
</configuration>

範例程式碼

下列程式碼範例會將專案新增至預設網站的副檔名清單,以拒絕存取副檔名為 .inc 的所有檔案,這些檔案有時會當做應用程式的檔案使用,並且會設定要求篩選,以允許 WebDAV 存取隱藏區段。

注意

若要使用相同的範例來允許存取,您會在每個範例中將 allowed 屬性的值設定為 true ,而不是 false

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/security/requestFiltering /fileExtensions.applyToWebDAV:"False"

appcmd.exe set config "Default Web Site" -section:system.webServer/security/requestFiltering /+"fileExtensions.[fileExtension='.inc',allowed='False']"

PowerShell

Start-IISCommitDelay

$fileExtensions = Get-IISConfigSection -CommitPath 'Default Web Site' -SectionPath 'system.webServer/security/requestFiltering' | Get-IISConfigCollection -CollectionName 'fileExtensions'

New-IISConfigCollectionElement -ConfigCollection $fileExtensions -ConfigAttribute @{ 'fileExtension' = '.inc'; 'allowed' = $false } -AddAt 0

Set-IISConfigAttributeValue -ConfigElement $fileExtensions -AttributeName 'applyToWebDAV' -AttributeValue $false

Stop-IISCommitDelay

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetWebConfiguration("Default Web Site");
         ConfigurationSection requestFilteringSection = config.GetSection("system.webServer/security/requestFiltering");

         ConfigurationElement fileExtensionsElement = requestFilteringSection.GetChildElement("fileExtensions");
         fileExtensionsElement["applyToWebDAV"] = false;
         ConfigurationElementCollection fileExtensionsCollection = fileExtensionsElement.GetCollection();

         ConfigurationElement addElement = fileExtensionsCollection.CreateElement("add");
         addElement["fileExtension"] = @"inc";
         addElement["allowed"] = false;
         fileExtensionsCollection.Add(addElement);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample

   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetWebConfiguration("Default Web Site")
      Dim requestFilteringSection As ConfigurationSection = config.GetSection("system.webServer/security/requestFiltering")

      Dim fileExtensionsElement As ConfigurationElement = requestFilteringSection.GetChildElement("fileExtensions")
      fileExtensionsElement("applyToWebDAV") = False
      Dim fileExtensionsCollection As ConfigurationElementCollection = fileExtensionsElement.GetCollection

      Dim addElement As ConfigurationElement = fileExtensionsCollection.CreateElement("add")
      addElement("fileExtension") = "inc"
      addElement("allowed") = False
      fileExtensionsCollection.Add(addElement)

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site";
var requestFilteringSection = adminManager.GetAdminSection("system.webServer/security/requestFiltering", "MACHINE/WEBROOT/APPHOST/Default Web Site");

var fileExtensionsElement = requestFilteringSection.ChildElements.Item("fileExtensions");
fileExtensionsElement.Properties.Item("applyToWebDAV").Value = false;
var fileExtensionsCollection = fileExtensionsElement.Collection;

var addElement = fileExtensionsCollection.CreateNewElement("add");
addElement.Properties.Item("fileExtension").Value = "inc";
addElement.Properties.Item("allowed").Value = false;
fileExtensionsCollection.AddElement(addElement);

adminManager.CommitChanges();

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site"
Set requestFilteringSection = adminManager.GetAdminSection("system.webServer/security/requestFiltering", "MACHINE/WEBROOT/APPHOST/Default Web Site")

Set fileExtensionsElement = requestFilteringSection.ChildElements.Item("fileExtensions")
fileExtensionsElement.Properties.Item("applyToWebDAV").Value = False
Set fileExtensionsCollection = fileExtensionsElement.Collection

Set addElement = fileExtensionsCollection.CreateNewElement("add")
addElement.Properties.Item("fileExtension").Value = "inc"
addElement.Properties.Item("allowed").Value = False
fileExtensionsCollection.AddElement(addElement)

adminManager.CommitChanges()