Поделиться через


Глаголы <глаголов>

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

Элемент <verbs> указывает, какие HTTP-команды разрешены или запрещены для ограничения типа HTTP-запросов, разрешенных веб-сервером.

Примечание

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

Подсостояние HTTP Описание
404.6 Глагол запрещен

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

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

Версия Примечания
IIS 10.0 Элемент <verbs> не был изменен в IIS 10.0.
IIS 8,5 Элемент <verbs> не был изменен в IIS 8.5.
IIS 8,0 Элемент <verbs> не был изменен в IIS 8.0.
IIS 7,5 Элемент <verbs> не был изменен в IIS 7.5.
IIS 7.0 Элемент <verbs> коллекции появился <requestFiltering> в IIS 7.0.
IIS 6,0 Элемент <verbs> заменяет функции IIS 6.0 UrlScan [AllowVerbs] и [DenyVerbs] .

Настройка

Установка служб 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 и веб-службы. Выбрана фильтрация запросов.

Инструкции

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

Как запретить HTTP-команду

  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. В области Фильтрация запросов перейдите на вкладку HTTP-команды , а затем нажмите кнопку Запретить команду... в области Действия .
    Снимок экрана: область

  5. В диалоговом окне Запретить глагол введите HTTP-команду, которую вы хотите заблокировать, и нажмите кнопку ОК.
    Снимок экрана: диалоговое окно

    Например, чтобы запретить ЗАПРОСы ТРАССИРОВКИ HTTP к серверу, введите в диалоговом окне "TRACE".

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

Атрибуты

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

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

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

Указывает, должны ли эти параметры также применяться к запросам WebDAV.

Дочерние элементы

Элемент Описание
add Необязательный элемент.

Добавляет команду в коллекцию глаголов.
clear Необязательный элемент.

Удаляет все ссылки на глаголы из коллекции verbs.
remove Необязательный элемент.

Удаляет ссылку на глагол из коллекции verbs.

Образец конфигурации

В следующем примере Web.config файле будут настроены два параметра: он настроит СЛУЖБЫ IIS для запрета HTTP-запросов PUT и настроит фильтрацию запросов, чтобы разрешить доступ WebDAV ко всем HTTP-командам.

<configuration>
   <system.webServer>
      <security>
         <requestFiltering>
            <verbs applyToWebDAV="false">
               <add verb="PUT" allowed="false" />
            </verbs>
         </requestFiltering>
      </security>
   </system.webServer>
</configuration>

Пример кода

В следующих примерах кода будет настроено два параметра: они настроят СЛУЖБЫ IIS для запрета HTTP-запросов PUT для веб-сайта по умолчанию и настроят фильтрацию запросов, чтобы разрешить доступ WebDAV ко всем HTTP-командам.

AppCmd.exe

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

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

PowerShell

Start-IISCommitDelay

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

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

New-IISConfigCollectionElement -ConfigCollection $verbs -ConfigAttribute @{ 'verb'='PUT';'allowed'=$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 verbsElement = requestFilteringSection.GetChildElement("verbs");
         verbsElement["applyToWebDAV"] = false;
         ConfigurationElementCollection verbsCollection = verbsElement.GetCollection();

         ConfigurationElement addElement = verbsCollection.CreateElement("add");
         addElement["verb"] = @"PUT";
         addElement["allowed"] = false;
         verbsCollection.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 verbsElement As ConfigurationElement = requestFilteringSection.GetChildElement("verbs")
      verbsElement("applyToWebDAV") = False
      Dim verbsCollection As ConfigurationElementCollection = verbsElement.GetCollection

      Dim addElement As ConfigurationElement = verbsCollection.CreateElement("add")
      addElement("verb") = "PUT"
      addElement("allowed") = False
      verbsCollection.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 verbsElement = requestFilteringSection.ChildElements.Item("verbs");
verbsElement.Properties.Item("applyToWebDAV").Value = false;
var verbsCollection = verbsElement.Collection;

var addElement = verbsCollection.CreateNewElement("add");
addElement.Properties.Item("verb").Value = "PUT";
addElement.Properties.Item("allowed").Value = false;
verbsCollection.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 verbsElement = requestFilteringSection.ChildElements.Item("verbs")
verbsElement.Properties.Item("applyToWebDAV").Value = False
Set verbsCollection = verbsElement.Collection

Set addElement = verbsCollection.CreateNewElement("add")
addElement.Properties.Item("verb").Value = "PUT"
addElement.Properties.Item("allowed").Value = False
verbsCollection.AddElement(addElement)

adminManager.CommitChanges()