Partilhar via


Extensões de nome de arquivo <fileExtensions>

Visão geral

O elemento <fileExtensions> contém uma coleção de elementos <add> que especificam extensões de nome de arquivo exclusivas que o IIS permitirá ou negará, dependendo de como cada elemento <add> é definido. Usando o elemento <fileExtensions>, você pode ajustar os tipos de conteúdo que seu servidor disponibilizará para clientes Web.

Por exemplo, se você definir o atributo allowUnlisted como false, todas as solicitações de arquivos com extensões que não estão contidas na lista de extensões permitidas serão negadas. Usando o elemento <clear>, você pode limpar a lista das extensões de nome de arquivo que já foram definidas e, em seguida, você pode especificar apenas as extensões de nome de arquivo que deseja permitir.

Observação

Quando a filtragem de solicitação bloqueia uma solicitação HTTP devido a uma extensão de nome de arquivo negada, o IIS 7 retornará um erro HTTP 404 ao cliente e registrará o seguinte status HTTP com um substatus exclusivo que identifica o motivo pelo qual a solicitação foi negada:

Substatus HTTP Descrição
404.7 Extensão de arquivo negada

Esse substatus permite que os administradores Web analisem seus logs do IIS e identifiquem possíveis ameaças.

Compatibilidade

Versão Observações
IIS 10.0 O elemento <fileExtensions> não foi modificado no IIS 10.0.
IIS 8.5 O elemento <fileExtensions> não foi modificado no IIS 8.5.
IIS 8.0 O elemento <fileExtensions> não foi modificado no IIS 8.0.
IIS 7.5 O elemento <fileExtensions> não foi modificado no IIS 7.5.
IIS 7.0 O elemento <fileExtensions> da coleção <requestFiltering> foi introduzido no IIS 7.0.
IIS 6,0 O elemento <fileExtensions> substitui os recursos [AllowExtensions] e [DenyExtensions] UrlScan do IIS 6.0.

Instalação

A instalação padrão do IIS 7 e versões posteriores inclui o serviço ou recurso de função Filtragem de Solicitações. Se o serviço ou recurso de função Filtragem de Solicitações for desinstalado, você poderá reinstalá-lo usando as etapas a seguir.

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, expanda Segurança e selecione Filtragem de Solicitações. Clique em Avançar.
    Screenshot of the Request Filtering option being highlighted and selected. .
  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, expanda Serviços da World Wide Web, expanda Segurança e, em seguida, selecione Filtragem de Solicitações.
    Screenshot of the Request Filtering folder being highlighted and selected.
  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 Filtragem de Solicitações e clique em Avançar.
    Screenshot of the Add Role Services Wizard
  5. Na página Confirmar Seleções de Instalação, clique em Instalar.
  6. 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. Expanda Serviços de Informações da Internet e, em seguida, Serviços World Wide Web e, em seguida, Segurança.
  4. Selecione Filtragem de Solicitações e clique em OK.
    Screenshot of the Select Roles Services Wizard showing the Request Filtering folder being highlighted and selected.

Instruções

Observação para usuários do IIS 7.0: algumas etapas nesta seção podem exigir que você instale o Microsoft Administration Pack para IIS 7.0, que inclui uma interface do usuário para filtragem de solicitações. Para instalar o Microsoft Administration Pack para IIS 7.0, consulte a seguinte URL:

Como negar o acesso a uma extensão de nome de arquivo específica

  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, acesse a conexão, o site, o aplicativo ou o diretório para o qual você deseja modificar as configurações de filtragem de solicitação.

  3. No painel Página Inicial, clique duas vezes em Filtragem de Solicitações.
    Screenshot of the Default Web Site Home pane showing the Request Filtering option being highlighted.

  4. No painel Filtragem de Solicitações, clique na guia Extensões de Nome de Arquivo e clique em Negar Extensão de Nome de Arquivo... no painel Ações.
    Screenshot of the Request Filtering pane showing the Deny File Name Extension option.

  5. Na caixa de diálogo Negar Extensão de Nome de Arquivo, insira a extensão de nome de arquivo que você deseja bloquear e, em seguida, clique em OK.
    Screenshot of the Deny File Name Extension dialog box, showing the O K option. Por exemplo, para impedir o acesso a arquivos com uma extensão de nome de arquivo .inc, digite "inc" na caixa de diálogo.

Configuração

Atributos

Atributo Descrição
allowUnlisted Atributo booliano opcional.

Especifica se o servidor Web deve processar arquivos que tenham extensões de nome de arquivo não listadas. Se você definir esse atributo como true, deverá listar todas as extensões de nome de arquivo que deseja negar. Se você definir esse atributo como false, deverá listar todas as extensões de nome de arquivo que deseja permitir.

O valor padrão é true.
applyToWebDAV Atributo booliano opcional.

Especifica se essas configurações também devem se aplicar a solicitações WebDAV.

Elementos filho

Elemento Descrição
add Elemento opcional.

Adiciona uma extensão de nome de arquivo à coleção de extensões de nome de arquivo.
clear Elemento opcional.

Remove todas as referências a extensões de nome de arquivo da coleção <fileExtensions>.
remove Elemento opcional.

Remove uma referência a uma extensão de nome de arquivo da coleção <fileExtensions>.

Exemplo de configuração

O arquivo Web.config de exemplo a seguir configurará duas opções. Ele configurará a filtragem de solicitações para permitir o acesso WebDAV a todas as extensões de nome de arquivo e configurará o IIS para negar acesso a arquivos com uma extensão de nome de arquivo .inc, que às vezes são usados como arquivos de inclusão para aplicativos.

<configuration>
   <system.webServer>
      <security>
         <requestFiltering>
            <fileExtensions applyToWebDAV="false">
               <add fileExtension=".inc" allowed="false" />
            </fileExtensions>
         </requestFiltering>
      </security>
   </system.webServer>
</configuration>

Exemplo de código

Os exemplos de código a seguir adicionarão uma entrada à lista de extensões de nome de arquivo para o Site Padrão que negará acesso a todos os arquivos com uma extensão .inc, que às vezes são usados como arquivos de inclusão para aplicativos e configurarão a filtragem de solicitações para permitir o acesso WebDAV a segmentos ocultos.

Observação

Para usar os mesmos exemplos para permitir o acesso, você definiria o valor do atributo allowed como true em vez de false em cada um desses exemplos.

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