Ограничения <ISAPI/CGI isapiCgiRestriction>
Общие сведения
Элемент <isapiCgiRestriction>
<элемента безопасности> позволяет указать список приложений CGI и ISAPI, которые могут выполняться в службах IIS 7. Этот элемент позволяет гарантировать, что злоумышленники не смогут скопировать несанкционированные двоичные файлы CGI и ISAPI на веб-сервер, а затем запустить их.
Этот элемент необходимо использовать для настройки веб-сервера, только если сайт или приложение использует пул приложений, работающий в классическом режиме. Ограничения, настроенные в элементе , <isapiCgiRestriction>
применяются только к коду ISAPI и CGI.
Элемент <isapiCgiRestriction>
содержит коллекцию <add>
элементов. Каждый <add>
элемент определяет отдельный двоичный файл, который не может выполняться на сервере IIS 7 в классическом режиме.
Например, если вы создали приложение ASP.NET 2.0 и настроили приложение для использования пула приложений, работающего в классическом режиме, все запросы к приложению ASP.NET должны проходить через aspnet_isapi.dll для обработки. Чтобы убедиться, что IIS обрабатывает запросы ASP.NET, IIS заполняет <isapiCgiRestriction>
элемент элементом <add>
, содержащим атрибут allowed со значением true.
Если вы изменили атрибут allowed на false и оставили пул приложений в классическом режиме, ASP.NET запросы завершатся ошибкой. Однако если вы изменили пул приложений на интегрированный режим, СЛУЖБЫ IIS обрабатывают запросы ASP.NET с помощью интегрированного конвейера запросов, который обходит настроенные ограничения ISAPI и CGI.
Элемент <isapiCgiRestriction>
работает совместно с элементом <applicationDependencies> , чтобы определить, какие приложения имеют зависимости от одного или нескольких ограничений расширения CGI или ISAPI.
Совместимость
Версия | Примечания |
---|---|
IIS 10.0 | Элемент <isapiCgiRestriction> не был изменен в IIS 10.0. |
IIS 8,5 | Элемент <isapiCgiRestriction> не был изменен в IIS 8.5. |
IIS 8,0 | Элемент <isapiCgiRestriction> не был изменен в IIS 8.0. |
IIS 7,5 | Элемент <isapiCgiRestriction> не был изменен в IIS 7.5. |
IIS 7.0 | Элемент <isapiCgiRestriction> появился в IIS 7.0. |
IIS 6,0 | Коллекция <isapiCgiRestriction> заменяет свойство WebSvcExtRestrictionList объекта метабазы IIsWebService IIS 6.0. |
Настройка
Коллекция <isapiCgiRestriction>
доступна только после установки модулей расширений CGI или ISAPI на сервере IIS 7 и более поздних версий. Вы не можете установить его независимо от этих компонентов.
Windows Server 2012 или Windows Server 2012 R2
- На панели задач щелкните Диспетчер сервера.
- В диспетчер сервера откройте меню Управление и выберите пункт Добавить роли и компоненты.
- В мастере добавления ролей и компонентов нажмите кнопку Далее. Выберите тип установки и нажмите кнопку Далее. Выберите целевой сервер и нажмите кнопку Далее.
- На странице Роли сервера разверните узел Веб-сервер (IIS),Веб-сервер, Узел приложения, а затем выберите Расширения CGI или ISAPI. Щелкните Далее.
. - На странице Выбор компонентов нажмите кнопку Далее.
- На странице Подтверждение выбранных элементов для установки нажмите кнопку Установить.
- На странице Результаты нажмите кнопку Закрыть.
Windows 8 или Windows 8.1
- На начальном экране переместите указатель в левый нижний угол, щелкните правой кнопкой мыши кнопку Пуск и выберите панель управления.
- В панель управления выберите Программы и компоненты, а затем — Включить или отключить компоненты Windows.
- Разверните узел Службы IIS, Веб-службы, Функции разработки приложений, а затем выберите Расширения CGI или ISAPI.
- Нажмите кнопку ОК.
- Щелкните Закрыть.
Windows Server 2008 или Windows Server 2008 R2
- На панели задач нажмите кнопку Пуск, выберите Администрирование, а затем диспетчер сервера.
- В области иерархии диспетчер сервера разверните узел Роли и выберите Веб-сервер (IIS).
- На панели Веб-сервер (IIS) прокрутите страницу до раздела Службы ролей и щелкните Добавить службы ролей.
- На странице Выбор служб ролеймастера добавления служб ролей выберите расширения CGI или ISAPI.
- Если откроется диалоговое окно Добавление служб ролей , щелкните Добавить необходимые службы ролей. (Эта страница отображается только в том случае, если вы еще не установили необходимые службы ролей на сервере.)
- На странице Выбор служб ролей нажмите кнопку Далее.
- На странице Подтверждение выбранных элементов для установки нажмите кнопку Установить.
- На странице Результаты нажмите кнопку Закрыть.
Windows Vista или Windows 7
- На панели задач нажмите кнопку Пуск, а затем панель управления.
- В панель управления выберите Программы и компоненты, а затем — Включить или отключить компоненты Windows.
- В диалоговом окне Компоненты Windows разверните узел Службы IIS, затем Веб-службы, а затем Компоненты разработки приложений.
- Выберите Расширения CGI или ISAPI и нажмите кнопку ОК.
Инструкции
Добавление ограничения ISAPI или CGI
Откройте диспетчер служб 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.
В области Подключения щелкните имя сервера.
На панели Главная дважды щелкните ограничения ISAPI и CGI.
В области Действия нажмите кнопку Добавить...
В диалоговом окне Добавление ограничения ISAPI или CGI введите путь к двоичному файлу, который нужно добавить, в поле ISAPI или CGI путь, введите описание двоичного файла в поле Описание, выберите параметр Разрешить путь расширения для выполнения проверка, чтобы разрешить выполнение двоичного файла на сервере, а затем нажмите кнопку ОК.
Конфигурация
Коллекцию <isapiCgiRestriction>
можно настроить только на уровне сервера в файле ApplicationHost.config.
Атрибуты
Атрибут | Описание |
---|---|
notListedIsapisAllowed |
Дополнительный логический атрибут. Указывает, разрешено ли запускать на этом сервере модули ISAPI, не указанные в списке. Значение по умолчанию — false . |
notListedCgisAllowed |
Дополнительный логический атрибут. Указывает, разрешено ли запускать на этом сервере программы CGI, не хвастаемые в списке. Значение по умолчанию — false . |
Дочерние элементы
Элемент | Описание |
---|---|
add |
Необязательный элемент. Добавляет ограничение в коллекцию ограничений ISAPI и CGI. |
remove |
Необязательный элемент. Удаляет ссылку на ограничение из коллекции isapiCgiRestriction. |
clear |
Необязательный элемент. Удаляет все ссылки на ограничения из коллекции isapiCgiRestriction. |
Образец конфигурации
Следующий пример конфигурации представляет собой конфигурацию <isapiCgiRestriction>
элемента для IIS 7.0 после установки ASP и ASP.NET версии 2.0.
<security>
<isapiCgiRestriction>
<add allowed="true" groupId="ASP"
path="%windir%\system32\inetsrv\asp.dll"
description="Active Server Pages" />
<add allowed="true" groupId="ASP.NET v2.0.50727"
path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll"
description="ASP.NET v2.0.50727" />
</isapiCgiRestriction>
</security>
Пример кода
В следующих примерах добавляется ограничение ISAPI/CGI для пользовательского расширения ISAPI, которое находится в папке содержимого веб-сайта, расположенного в папке C:\Inetpub\www.contoso.com\wwwroot. В примерах указывается имя, путь и группа расширения ISAPI и включается расширение.
AppCmd.exe
appcmd.exe set config -section:system.webServer/security/isapiCgiRestriction /+"[path='C:\Inetpub\www.contoso.com\wwwroot\isapi\custom.dll',allowed='True',groupId='ContosoGroup',description='Contoso Extension']" /commit:apphost
Примечание
При использовании AppCmd.exe для настройки этих параметров для параметра apphost
фиксации необходимо задать значение . Это зафиксирует параметры конфигурации в соответствующем разделе расположения в файле ApplicationHost.config.
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.GetApplicationHostConfiguration();
ConfigurationSection isapiCgiRestrictionSection = config.GetSection("system.webServer/security/isapiCgiRestriction");
ConfigurationElementCollection isapiCgiRestrictionCollection = isapiCgiRestrictionSection.GetCollection();
ConfigurationElement addElement = isapiCgiRestrictionCollection.CreateElement("add");
addElement["path"] = @"C:\Inetpub\www.contoso.com\wwwroot\isapi\custom.dll";
addElement["allowed"] = true;
addElement["groupId"] = @"ContosoGroup";
addElement["description"] = @"Contoso Extension";
isapiCgiRestrictionCollection.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.GetApplicationHostConfiguration
Dim isapiCgiRestrictionSection As ConfigurationSection = config.GetSection("system.webServer/security/isapiCgiRestriction")
Dim isapiCgiRestrictionCollection As ConfigurationElementCollection = isapiCgiRestrictionSection.GetCollection
Dim addElement As ConfigurationElement = isapiCgiRestrictionCollection.CreateElement("add")
addElement("path") = "C:\Inetpub\www.contoso.com\wwwroot\isapi\custom.dll"
addElement("allowed") = True
addElement("groupId") = "ContosoGroup"
addElement("description") = "Contoso Extension"
isapiCgiRestrictionCollection.Add(addElement)
serverManager.CommitChanges()
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var isapiCgiRestrictionSection = adminManager.GetAdminSection("system.webServer/security/isapiCgiRestriction", "MACHINE/WEBROOT/APPHOST");
var isapiCgiRestrictionCollection = isapiCgiRestrictionSection.Collection;
var addElement = isapiCgiRestrictionCollection.CreateNewElement("add");
addElement.Properties.Item("path").Value = "C:\\Inetpub\\www.contoso.com\\wwwroot\\isapi\\custom.dll";
addElement.Properties.Item("allowed").Value = true;
addElement.Properties.Item("groupId").Value = "ContosoGroup";
addElement.Properties.Item("description").Value = "Contoso Extension";
isapiCgiRestrictionCollection.AddElement(addElement);
adminManager.CommitChanges();
VBScript
Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set isapiCgiRestrictionSection = adminManager.GetAdminSection("system.webServer/security/isapiCgiRestriction", "MACHINE/WEBROOT/APPHOST")
Set isapiCgiRestrictionCollection = isapiCgiRestrictionSection.Collection
Set addElement = isapiCgiRestrictionCollection.CreateNewElement("add")
addElement.Properties.Item("path").Value = "C:\Inetpub\www.contoso.com\wwwroot\isapi\custom.dll"
addElement.Properties.Item("allowed").Value = True
addElement.Properties.Item("groupId").Value = "ContosoGroup"
addElement.Properties.Item("description").Value = "Contoso Extension"
isapiCgiRestrictionCollection.AddElement(addElement)
adminManager.CommitChanges()