Compartilhar via


Limites de Solicitações <requestLimits>

Visão geral

O elemento <requestLimits> especifica limites em solicitações HTTP que são processadas pelo servidor Web. Esses limites incluem o tamanho máximo de uma solicitação, o comprimento máximo da URL e o comprimento máximo de uma cadeia de caracteres de consulta. Além disso, o elemento <requestLimits> pode conter uma coleção de limites de cabeçalho HTTP definidos pelo usuário no elemento <headerLimits>, o que permite definir configurações personalizadas em cabeçalhos HTTP.

Observação

Quando a filtragem de solicitação bloqueia uma solicitação HTTP porque uma solicitação HTTP excede os limites de solicitação, o IIS 7 retornará um erro HTTP 404 ao cliente e registrará um dos seguintes status HTTP com um substatus exclusivo que identifica o motivo pelo qual a solicitação foi negada:

Substatus HTTP Descrição
404.14 URL muito longa
404.15 Cadeia de caracteres de consulta muito longa
413.1 Tamanho do conteúdo muito grande

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

Além disso, quando uma solicitação HTTP excede os limites de cabeçalho definidos no elemento <headerLimits>, o IIS 7 retornará um erro HTTP 404 para o cliente com o seguinte substatus:

Substatus HTTP Descrição
431 Cabeçalho de solicitação muito longo

Compatibilidade

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

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. .
  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.
  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 Request Filtering option being highlighted and the only selected option.
  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 Request Filtering folder being selected and highlighted.

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 editar as configurações do recurso de filtragem de solicitação e os limites de solicitação

  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 screen's Home pane.

  4. Clique em Editar Configurações de Recurso... no painel Ações.
    Screenshot of the Request Filtering screen, showing the File Name Extensions and Hidden Segment tab.

  5. Especifique suas opções e clique em OK.
    Screenshot of the Edit Request Filtering Settings dialog box, showing four selectable fields. Por exemplo, você pode fazer as seguintes alterações:

    • Altere o comprimento máximo da URL para 2KB especificando 2048.
    • Altere o comprimento máximo da cadeia de caracteres de consulta para 1KB especificando 1024.
    • Negue acesso a verbos HTTP não listados desmarcando a caixa de seleção Permitir verbos não listados.

Como adicionar limites para cabeçalhos HTTP

  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 screen, showing the Failed Request Tracing Rules, Handler Mappings, and H T T P Redirect options.

  4. No painel Filtragem de Solicitações, clique na guia Cabeçalhos e clique em Adicionar Cabeçalho... no painel Ações.
    Screenshot of the Request Filtering pane, showing the H T T P Verbs and Headers tabs.

  5. Na caixa de diálogo Adicionar Cabeçalho, digite o cabeçalho HTTP e o tamanho máximo desejado para o limite de cabeçalho e clique em OK.
    Screenshot of the Add Header dialog box, showing the Header and Size limit fields.

    Por exemplo, o cabeçalho "Content-type" contém o tipo MIME para uma solicitação. A especificação de um valor de 100 limitaria o tamanho de um cabeçalho "Content-type" a 100 bytes.

Configuração

Atributos

Atributo Descrição
maxAllowedContentLength Atributo uint opcional.

Especifica o tamanho máximo do conteúdo em uma solicitação em bytes.

O valor padrão é 30000000, que é aproximadamente 28,6 MB.
maxQueryString Atributo uint opcional.

Especifica o tamanho máximo da cadeia de caracteres de consulta em bytes.

O valor padrão é 2048.
maxUrl Atributo uint opcional.

Especifica o tamanho máximo da URL em bytes.

O valor padrão é 4096.

Elementos filho

Elemento Descrição
headerlimits Elemento opcional.

Especifica limites de tamanho para cabeçalhos HTML.

Exemplo de configuração

O arquivo Web.config de exemplo a seguir configurará o IIS para negar acesso a solicitações HTTP em que o comprimento do cabeçalho "Content-type" seja maior que 100 bytes.

<configuration>
   <system.webServer>
      <security>
         <requestFiltering>
            <requestLimits>
               <headerLimits>
                  <add header="Content-type" sizeLimit="100" />
               </headerLimits>
            </requestLimits>
         </requestFiltering>
      </security>
   </system.webServer>
</configuration>

Exemplo de código

Os códigos de exemplo a seguir configurarão o IIS para negar acesso a solicitações HTTP em que o comprimento do cabeçalho "Content-type" seja maior que 100 bytes.

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/security/requestFiltering /+"requestLimits.headerLimits.[header='Content-type',sizeLimit='100']"

PowerShell

$requestLimits = Get-IISConfigSection -CommitPath 'Default Web Site' -SectionPath 'system.webServer/security/requestFiltering' | Get-IISConfigElement -ChildElementName 'requestLimits'
$headerLimits = Get-IISConfigCollection -ConfigElement $requestLimits -CollectionName 'headerLimits'
New-IISConfigCollectionElement -ConfigCollection $headerLimits -ConfigAttribute @{ 'header'='Content-Type'; 'sizeLimit'=100 }

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 requestLimitsElement = requestFilteringSection.GetChildElement("requestLimits");
         ConfigurationElementCollection headerLimitsCollection = requestLimitsElement.GetCollection("headerLimits");

         ConfigurationElement addElement = headerLimitsCollection.CreateElement("add");
         addElement["header"] = @"Content-type";
         addElement["sizeLimit"] = 100;
         headerLimitsCollection.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 requestLimitsElement As ConfigurationElement = requestFilteringSection.GetChildElement("requestLimits")
      Dim headerLimitsCollection As ConfigurationElementCollection = requestLimitsElement.GetCollection("headerLimits")

      Dim addElement As ConfigurationElement = headerLimitsCollection.CreateElement("add")
      addElement("header") = "Content-type"
      addElement("sizeLimit") = 100
      headerLimitsCollection.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 requestLimitsElement = requestFilteringSection.ChildElements.Item("requestLimits");
var headerLimitsCollection = requestLimitsElement.ChildElements.Item("headerLimits").Collection;

var addElement = headerLimitsCollection.CreateNewElement("add");
addElement.Properties.Item("header").Value = "Content-type";
addElement.Properties.Item("sizeLimit").Value = 100;
headerLimitsCollection.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 requestLimitsElement = requestFilteringSection.ChildElements.Item("requestLimits")
Set headerLimitsCollection = requestLimitsElement.ChildElements.Item("headerLimits").Collection

Set addElement = headerLimitsCollection.CreateNewElement("add")
addElement.Properties.Item("header").Value = "Content-type"
addElement.Properties.Item("sizeLimit").Value = 100
headerLimitsCollection.AddElement(addElement)

adminManager.CommitChanges()