Расширения имени <файлаРасширения>

Общие сведения

Элемент <fileExtensions> содержит коллекцию элементов, указывающих <add> уникальные расширения имен файлов, которые iis разрешают или запрещают в зависимости от того, как определяется каждый <add> элемент. С помощью <fileExtensions> элемента можно точно настроить типы содержимого, которое сервер сделает доступным для веб-клиентов.

Например, если для атрибута allowUnlisted заданозначение false, все запросы файлов с расширениями, которые не содержатся в списке разрешенных расширений, будут отклонены. С помощью <clear> элемента можно очистить список уже определенных расширений имен файлов, а затем указать только расширения имен файлов, которые вы хотите разрешить.

Примечание

Когда фильтрация запросов блокирует HTTP-запрос из-за отказа в расширении имени файла, IIS 7 возвращает клиенту ошибку HTTP 404 и регистрирует следующее состояние HTTP с уникальным подсостояние, которое определяет причину отклонения запроса:

Подсостояние HTTP Описание
404.7 Расширение файла запрещено

Это подсостояние позволяет веб-администраторам анализировать журналы IIS и выявлять потенциальные угрозы.

Совместимость

Версия Примечания
IIS 10.0 Элемент <fileExtensions> не был изменен в IIS 10.0.
IIS 8,5 Элемент <fileExtensions> не был изменен в IIS 8.5.
IIS 8,0 Элемент <fileExtensions> не был изменен в IIS 8.0.
IIS 7,5 Элемент <fileExtensions> не был изменен в IIS 7.5.
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. На странице Роли сервера разверните узел Веб-сервер (IIS),веб-сервер, безопасность, а затем выберите Фильтрация запросов. Щелкните Далее.
    Снимок экрана: выделенный и выбранный параметр .
  5. На странице Выбор компонентов нажмите кнопку Далее.
  6. На странице Подтверждение выбранных элементов для установки нажмите кнопку Установить.
  7. На странице Результаты нажмите кнопку Закрыть.

Windows 8 или Windows 8.1

  1. На начальном экране переместите указатель в левый нижний угол, щелкните правой кнопкой мыши кнопку Пуск и выберите пункт панель управления.
  2. В панель управления щелкните Программы и компоненты, а затем — Включить или выключить компоненты Windows.
  3. Разверните узлы Службы IIS, Службы Интернета, Безопасность, а затем выберите Фильтрация запросов.
    Снимок экрана: выделенная и выбранная папка
  4. Нажмите кнопку ОК.
  5. Щелкните Закрыть.

Windows Server 2008 или Windows Server 2008 R2

  1. На панели задач нажмите кнопку Пуск, наведите указатель мыши на пункт Администрирование, а затем щелкните диспетчер сервера.
  2. В области иерархии диспетчер сервера разверните узел Роли, а затем щелкните Веб-сервер (IIS) .
  3. В области Веб-сервер (IIS) прокрутите страницу до раздела Службы ролей и щелкните Добавить службы ролей.
  4. На странице Выбор служб ролеймастера добавления служб ролей выберите Фильтрация запросов и нажмите кнопку Далее.
    Снимок экрана: мастер добавления служб ролей
  5. На странице Подтверждение выбранных элементов для установки нажмите кнопку Установить.
  6. На странице Результаты нажмите кнопку Закрыть.

Windows Vista или Windows 7

  1. На панели задач нажмите кнопку Пуск, а затем выберите пункт панель управления.
  2. В панель управления щелкните Программы и компоненты, а затем — Включить или отключить компоненты Windows.
  3. Разверните узел Службы IIS, Затем — Службы Интернета, а затем — Безопасность.
  4. Выберите Фильтрация запросов и нажмите кнопку ОК.
    Снимок экрана: мастер выбора служб ролей с выделенной и выбранной папкой

Инструкции

Примечание для пользователей IIS 7.0. Для некоторых действий, описанных в этом разделе, может потребоваться установить пакет администрирования Майкрософт для IIS 7.0, который включает пользовательский интерфейс для фильтрации запросов. Чтобы установить пакет администрирования Майкрософт для IIS 7.0, см. следующий URL-адрес:

Как запретить доступ к определенному расширению имени файла

  1. Откройте диспетчер служб IIS.

    • Если вы используете Windows Server 2012 или Windows Server 2012 R2:

      • На панели задач щелкните диспетчер сервера, инструменты, а затем диспетчер служб IIS.
    • Если вы используете Windows 8 или Windows 8.1:

      • Удерживая нажатой клавишу Windows, нажмите букву X и щелкните панель управления.
      • Щелкните Администрирование, а затем дважды щелкните диспетчер служб IIS.
    • Если вы используете Windows Server 2008 или Windows Server 2008 R2:

      • На панели задач нажмите кнопку Пуск, наведите указатель на пункт Администрирование, а затем щелкните Диспетчер служб IIS.
    • Если вы используете Windows Vista или Windows 7:

      • На панели задач нажмите кнопку Пуск, а затем выберите пункт панель управления.
      • Дважды щелкните элемент Администрирование, а затем дважды щелкните диспетчер служб IIS.
  2. В области Подключения перейдите к подключению, сайту, приложению или каталогу, для которых вы хотите изменить параметры фильтрации запросов.

  3. В области Главная дважды щелкните Фильтрация запросов.
    Снимок экрана: панель

  4. В области Фильтрация запросов перейдите на вкладку Расширения имен файлов и выберите пункт Запретить расширение имени файла... в области Действия .
    Снимок экрана: область

  5. В диалоговом окне Запретить расширение имени файла введите расширение имени файла, которое необходимо заблокировать, и нажмите кнопку ОК.
    Снимок экрана: диалоговое окно Например, чтобы запретить доступ к файлам с расширением .inc, введите "inc" в диалоговом окне.

Конфигурация

Атрибуты

Атрибут Описание
allowUnlisted Дополнительный логический атрибут.

Указывает, должен ли веб-сервер обрабатывать файлы с неподписанными расширениями имен файлов. Если для этого атрибута задано значение true, необходимо вывести список всех расширений имен файлов, которые вы хотите запретить. Если для этого атрибута задано значение false, необходимо вывести список всех расширений имен файлов, которые вы хотите разрешить.

Значение по умолчанию — true.
applyToWebDAV Дополнительный логический атрибут.

Указывает, должны ли эти параметры также применяться к запросам 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 к скрытым сегментам.

Примечание

Чтобы использовать одни и те же примеры для разрешения доступа, в каждом из этих примеров необходимо задать значение 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()