Compartilhar via


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

  1. Na barra de tarefas, clique em Gerenciador do Servidor.
  2. No Gerenciador do Servidor, clique no menu Gerenciar e clique em Adicionar Funções e Recursos.
  3. 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.
  4. 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.
    Screenshot of the Add Roles and Features wizard. I S A P I Extensions option is highlighted in the menu. .
  5. Na página Selecionar recursos, clique em Avançar.
  6. Na página Confirmar seleções de instalação, clique em Instalar.
  7. Na página Resultados , clique em Fechar.

Windows 8 ou Windows 8.1

  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.
  2. Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar recursos do Windows.
  3. 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.
    Screenshot of the Windows Features dialog box. The I S A P I Extensions feature is highlighted.
  4. Clique em OK.
  5. Clique em Fechar.

Windows Server 2008 R2 ou Windows Server 2008

  1. Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador do Servidor.
  2. No painel de hierarquia do Gerenciador do Servidor, expanda Funções e clique em Servidor Web (IIS).
  3. No painel Servidor Web (IIS), role até a seção Serviços de Função e clique em Adicionar Serviços de Função.
  4. Na página Selecionar Serviços de Função do Assistente para Adicionar Serviços de Função, selecione CGI ou Extensões ISAPI.
    Screenshot of the Add Role Services displaying the Role Services page. The I S A P I Extensions feature is highlighted.
  5. 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.)
  6. Na página Selecionar Serviços de Função, clique em Avançar.
  7. Na página Confirmar Seleções de Instalação, clique em Instalar.
  8. Na página Resultados , clique em Fechar.

Windows Vista ou Windows 7

  1. Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.
  2. Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar Recursos do Windows.
  3. 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.
  4. Selecione CGI ou Extensões de ISAPI e clique em OK.
    Screenshot of the Windows Features dialog with the I S A P I Extensions feature highlighted.

Instruções

Como adicionar uma restrição ISAPI ou CGI

  1. 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).
  2. No painel Conexões, clique no nome do servidor.

  3. No painel Página Inicial, clique duas vezes em Restrições ISAPI e CGI.
    Screenshot of the I I S Manager window displaying the Server Home page. The icon for I S A P I and C G I Restrictions is highlighted.

  4. No painel Ações, clique em Adicionar...

  5. 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.
    Screenshot of the Add I S A P I or C G I Restriction dialog box.

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()