Restrições ISAPI/CGI <isapiCgiRestriction>
Visão geral
O elemento <isapiCgiRestriction>
do elemento <security> permite que você especifique uma lista de aplicativos CGI e ISAPI que podem ser executados no IIS (Serviços de Informações da Internet) 7. Esse elemento permite que você garanta que usuários mal-intencionados não possam copiar binários CGI e ISAPI não autorizados para o servidor Web e, em seguida, executá-los.
Você precisa usar esse elemento para configurar o servidor Web somente quando um site ou aplicativo usa um pool de aplicativos executado no modo Clássico. As restrições configuradas no elemento <isapiCgiRestriction>
se aplicam somente ao código ISAPI e CGI.
O elemento <isapiCgiRestriction>
contém uma coleção de elementos <add>
. Cada elemento <add>
define um binário distinto que não pode ser executado em um servidor IIS 7 no modo clássico.
Por exemplo, se você criou um aplicativo ASP.NET 2.0 e configurou o aplicativo para usar um pool de aplicativos executado no modo Clássico, todas as solicitações para o aplicativo ASP.NET devem passar pelo aspnet_isapi.dll para serem processadas. Para garantir que o IIS processe as solicitações de ASP.NET, o IIS preenche o elemento <isapiCgiRestriction>
com um elemento <add>
que contém um atributo permitido com seu valor definido como true.
Se você alterou o atributo permitido para false e deixou o pool de aplicativos no modo Clássico, as solicitações ASP.NET falharão. No entanto, se você alterou o pool de aplicativos para o modo Integrado, o IIS processará as solicitações de ASP.NET usando o pipeline de solicitação integrado, que ignora a restrição ISAPI e CGI configurada.
O elemento <isapiCgiRestriction>
funciona em conjunto com o elemento <applicationDependencies> para definir quais aplicativos têm dependências em uma ou mais restrições de extensão CGI ou ISAPI.
Compatibilidade
Versão | Observações |
---|---|
IIS 10.0 | O elemento <isapiCgiRestriction> não foi modificado no IIS 10.0. |
IIS 8.5 | O elemento <isapiCgiRestriction> não foi modificado no IIS 8.5. |
IIS 8.0 | O elemento <isapiCgiRestriction> não foi modificado no IIS 8.0. |
IIS 7.5 | O elemento <isapiCgiRestriction> não foi modificado no IIS 7.5. |
IIS 7.0 | O elemento <isapiCgiRestriction> foi introduzido no IIS 7.0. |
IIS 6,0 | A coleção <isapiCgiRestriction> substitui a propriedade WebSvcExtRestrictionList do objeto de metabase IIsWebService do IIS 6.0. |
Instalação
A coleção <isapiCgiRestriction>
está disponível somente depois de instalar os módulos de Etensões CGI ou ISAPI no servidor IIS 7 e posterior. Você não pode instalá-lo independentemente desses recursos.
Windows Server 2012 R2 ou Windows Server 2012
- Na barra de tarefas, clique em Gerenciador do Servidor.
- No Gerenciador do Servidor, clique no menu Gerenciar e clique em Adicionar Funções e Recursos.
- No assistente Adicionar Funções e Recursos, clique em Avançar. Selecione o tipo de instalação e clique em Avançar. Selecione o servidor de destino e clique em Avançar.
- Na página Funções de Servidor, expanda Servidor Web (IIS), Servidor Web, Desenvolvimento do Aplicativo e selecionar CGI ou Extensões ISAPI. Clique em Avançar.
. - Na página Selecionar recursos, clique em Avançar.
- Na página Confirmar seleções de instalação, clique em Instalar.
- Na página Resultados , clique em Fechar.
Windows 8 ou Windows 8.1
- Na tela Iniciar, mova o ponteiro até o canto inferior esquerdo, clique com o botão direito do mouse no botão Iniciar e clique em Painel de Controle.
- Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar recursos do Windows.
- Expanda Serviços de Informações da Internet, Serviços da World Wide Web, Recursos de Desenvolvimento de Aplicativos e selecione CGI ou Extensões ISAPI.
- Clique em OK.
- Clique em Fechar.
Windows Server 2008 R2 ou Windows Server 2008
- Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador do Servidor.
- No painel de hierarquia do Gerenciador do Servidor, expanda Funções e clique em Servidor Web (IIS).
- No painel Servidor Web (IIS), role até a seção Serviços de Função e clique em Adicionar Serviços de Função.
- Na página Selecionar Serviços de Função do Assistente para Adicionar Serviços de Função, selecione CGI ou Extensões ISAPI.
- Se a caixa de diálogo Adicionar serviços de função for exibida, clique em Adicionar Serviços de Função Necessários. (Esta página será exibida somente se você ainda não tiver instalado nenhum serviço de função de pré-requisito no servidor.)
- Na página Selecionar Serviços de Função, clique em Avançar.
- Na página Confirmar Seleções de Instalação, clique em Instalar.
- Na página Resultados , clique em Fechar.
Windows Vista ou Windows 7
- Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.
- Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar Recursos do Windows.
- Na caixa de diálogo Recursos do Windows, expanda Serviços de Informações da Internet, em seguida, World Wide Web Services e Recursos de Desenvolvimento de Aplicativos.
- Selecione CGI ou Extensões de ISAPI e clique em OK.
Instruções
Como adicionar uma restrição ISAPI ou CGI
Abra o Gerenciador dos Serviços de Informações da Internet (IIS):
Caso você esteja usando o Windows Server 2012 ou o Windows Server 2012 R2:
- Na barra de tarefas, clique em Gerenciador do Servidor, em Ferramentas e em Gerenciador dos Serviços de Informações da Internet (IIS).
Se você estiver usando o Windows 8 ou Windows 8.1:
- Mantenha pressionada a tecla Windows, pressione a letra X e clique em Painel de Controle.
- Clique em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
Caso você esteja usando o Windows Server 2008 ou o Windows Server 2008 R2:
- Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador dos Serviços de Informações da Internet (IIS).
Se você estiver usando o Windows Vista ou Windows 7:
- Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.
- Clique duas vezes em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
No painel Conexões, clique no nome do servidor.
No painel Página Inicial, clique duas vezes em Restrições ISAPI e CGI.
No painel Ações, clique em Adicionar...
Na caixa de diálogo Adicionar Restrição de ISAPI ou CGI, digite o caminho para o binário que você deseja adicionar na caixa Caminho ISAPI ou CGI, digite a descrição do binário na caixa Descrição, selecione a caixa de seleção Permitir a opção do caminho de extensão para executar para permitir que o binário execute no servidor e clique em OK.
Configuração
A coleção <isapiCgiRestriction>
só pode ser configurada no nível do servidor no arquivo ApplicationHost.config.
Atributos
Atributo | Descrição |
---|---|
notListedIsapisAllowed |
Atributo booliano opcional. Especifica se módulos ISAPI não listados têm permissão para serem executados neste servidor. O valor padrão é false . |
notListedCgisAllowed |
Atributo booliano opcional. Especifica se programas CGI não listados têm permissão para serem executados neste servidor. O valor padrão é false . |
Elementos filho
Elemento | Descrição |
---|---|
add |
Elemento opcional. Adiciona uma restrição à coleção de restrições ISAPI e CGI. |
remove |
Elemento opcional. Remove uma referência a uma restrição da coleção isapiCgiRestriction. |
clear |
Elemento opcional. Remove todas as referências a restrições da coleção isapiCgiRestriction. |
Exemplo de configuração
O exemplo de configuração a seguir é a configuração do elemento <isapiCgiRestriction>
para o IIS 7.0 depois de instalar o ASP e o ASP.NET versão 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>
Exemplo de código
Os exemplos a seguir adicionam uma restrição ISAPI/CGI para uma extensão ISAPI personalizada localizada na pasta de conteúdo de um site localizado em C:\Inetpub\www.contoso.com\wwwroot. Os exemplos especificam o nome, o caminho e o grupo da extensão ISAPI e habilitam a extensão.
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
Observação
Defina o parâmetro commit para apphost
quando usar AppCmd.exe para definir essas configurações. Isso confirma as definições de configuração para a seção de local apropriado no arquivo 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()