Share via


Límites de solicitudes <requestLimits>

Información general

El elemento <requestLimits> especifica límites en las solicitudes HTTP procesadas por el servidor web. Estos límites incluyen el tamaño máximo de una solicitud, la longitud máxima de la dirección URL y la longitud máxima de una cadena de consulta. Además, el <requestLimits> elemento puede contener una colección de límites de encabezado HTTP definidos por el usuario en el <headerLimits> elemento, que permite definir la configuración personalizada en encabezados HTTP.

Nota:

Cuando el filtrado de solicitudes bloquea una solicitud HTTP porque una solicitud HTTP supera los límites de solicitud, IIS 7 devolverá un error HTTP 404 al cliente y registrará uno de los siguientes estados HTTP con un subestado único que identifique el motivo por el que se denegó la solicitud:

Subestado HTTP Descripción
404.14 Dirección URL demasiado larga
404.15 Cadena de consulta demasiado larga
413.1 Longitud del contenido demasiado grande

Este subestado permite a los administradores web analizar sus registros de IIS e identificar posibles amenazas.

Además, cuando una solicitud HTTP supera los límites de encabezado definidos en el <headerLimits> elemento, IIS 7 devolverá un error HTTP 404 al cliente con las siguientes subestados:

Subestado HTTP Descripción
431 Encabezado de solicitud demasiado largo

Compatibilidad

Versión Notas
IIS 10.0 El elemento <requestLimits> no se modificó en IIS 10.0.
IIS 8.5 El elemento <requestLimits> no se modificó en IIS 8.5.
IIS 8.0 El elemento <requestLimits> no se modificó en IIS 8.0.
IIS 7.5 El elemento <requestLimits> no se modificó en IIS 7.5.
IIS 7.0 El elemento <requestLimits> de la colección <requestFiltering> se introdujo en IIS 7.0.
IIS 6,0 El <requestLimits> elemento reemplaza las características de URLScan de IIS 6.0 [RequestLimits].

Configuración

La instalación predeterminada de IIS 7 y versiones posteriores incluye el servicio de rol o característica Filtrado de solicitudes. Si se desinstala el servicio o el rol de Filtrado de solicitudes puede volver a instalarlo siguiendo estos pasos.

Windows Server 2012 o Windows Server 2012 R2

  1. En la barra de tareas, haga clic en Administrador del servidor.
  2. En Administrador del servidor, haga clic en el menú Administrar y, después, haga clic en Agregar roles y características.
  3. En el asistente para Agregar roles y características, haga clic en Siguiente. Seleccione el tipo de instalación y haga clic en Siguiente. Seleccione el servidor de destino y haga clic en Siguiente.
  4. En la página Roles de servidor, expanda Servidor web (IIS), expanda Servidor web, expanda Seguridad y luego seleccione Filtrado de solicitudes. Haga clic en Next.
    Screenshot of the Request Filtering option being highlighted..
  5. En la página Seleccionar características, haz clic en Siguiente.
  6. En la página Confirmar selecciones de instalación, haga clic en Instalar.
  7. En la página Resultados , haga clic en Cerrar.

Windows 8 o Windows 8.1

  1. En la pantalla Inicio, mueva el puntero hasta la esquina inferior izquierda, haga clic con el botón derecho en el botón Inicio y, a continuación, haga clic en Panel de control.
  2. En Panel de control, haga clic en Programas y características y después en Activar o desactivar las características de Windows.
  3. Expanda Internet Information Services, expanda Servicios World Wide Web, expanda Seguridad y luego seleccione Filtrado de solicitudes.
    Screenshot of the Request Filtering folder being highlighted.
  4. Haga clic en OK.
  5. Haga clic en Cerrar.

Windows Server 2008 o Windows Server 2008 R2

  1. En la barra de tareas, haga clic en Inicio, seleccione Herramientas administrativas y, luego, haga clic en Administrador del servidor.
  2. En el panel de jerarquía del Administrador del servidor, expanda Roles y, luego, haga clic en Servidor web (IIS).
  3. En el panel Servidor web (IIS), desplácese hasta la sección Servicios de rol y, luego, haga clic en Agregar servicios de rol.
  4. En la página Seleccionar servicios de rol del Asistente para agregar servicios de rol, seleccione Filtrado de solicitudes y luego haga clic en Siguiente.
    Screenshot of the Request Filtering option being highlighted and the only selected option.
  5. En la página Confirmar selecciones de instalación, haz clic en Instalar.
  6. En la página Resultados , haga clic en Cerrar.

Windows Vista o Windows 7

  1. En la barra de tareas, haga clic en Inicio y, luego, haga clic en Panel de control.
  2. En Panel de control, haga clic en Programas y características y después en Activar o desactivar las características de Windows.
  3. Expanda Internet Information Services, después World Wide Web Services y luego Seguridad.
  4. Seleccione Filtrado de solicitudes y haga clic en Aceptar.
    Screenshot of the Request Filtering folder being selected and highlighted.

Procedimientos

Nota para los usuarios de IIS 7.0: algunos de los pasos de esta sección pueden requerir que instale el módulo Administration Pack de Microsoft para IIS 7.0, que incluye una interfaz de usuario para el filtrado de solicitudes. Para instalar el módulo Administration Pack de Microsoft para IIS 7.0, consulte la siguiente dirección URL:

Cómo editar la configuración de características de filtrado de solicitudes y los límites de las solicitudes

  1. Abra el Administrador de Internet Information Services (IIS):

    • Si usa Windows Server 2012 o Windows Server 2012 R2:

      • En la barra de tareas, haga clic en Administrador del servidor, en Herramientas y, a continuación, en Administrador de Internet Information Services (IIS).
    • Si usa Windows 8 o Windows 8.1:

      • Mantenga presionada la tecla Windows, presione la letra X y haga clic en Panel de control.
      • En Panel de control, haga clic en Herramientas administrativas y, a continuación, haga doble clic en Administrador de Internet Information Services (IIS).
    • Si usa Windows Server 2008 o Windows Server 2008 R2:

      • En la barra de tareas, haga clic en Inicio, seleccione Herramientas administrativas y, a continuación, haga clic en Administrador de Internet Information Services (IIS).
    • Si usa Windows Vista o Windows 7:

      • En la barra de tareas, haga clic en Inicio y, luego, haga clic en Panel de control.
      • Haga doble clic en Herramientas administrativas y, a continuación, haga doble clic en Administrador de Internet Information Services (IIS).
  2. En el panel Conexiones, vaya a la conexión, sitio u aplicación de la que quiere modificar la configuración del filtrado de solicitudes.

  3. En el panel Página principal, haga doble clic en Filtrado de solicitudes.
    Screenshot of the Default Web Site Home screen's Home pane.

  4. Haga clic en Modificar configuración de característica... en el panel Acciones.
    Screenshot of the Request Filtering screen, showing the File Name Extensions and Hidden Segment tab.

  5. Especifique las opciones y haga clic en Aceptar.
    Screenshot of the Edit Request Filtering Settings dialog box, showing four selectable fields. Por ejemplo, puede realizar los siguientes cambios:

    • Especifique 2048 para cambiar la longitud máxima de dirección URL a 2 KB.
    • Cambie la longitud máxima de la cadena de consulta a 1 KB especificando 1024.
    • Deniegue el acceso a verbos HTTP no enumerados desactivando la casilla Permitir verbos no enumerados.

Adición de límites para encabezados HTTP

  1. Abra el Administrador de Internet Information Services (IIS):

    • Si usa Windows Server 2012 o Windows Server 2012 R2:

      • En la barra de tareas, haga clic en Administrador del servidor, en Herramientas y, a continuación, en Administrador de Internet Information Services (IIS).
    • Si usa Windows 8 o Windows 8.1:

      • Mantenga presionada la tecla Windows, presione la letra X y haga clic en Panel de control.
      • En Panel de control, haga clic en Herramientas administrativas y, a continuación, haga doble clic en Administrador de Internet Information Services (IIS).
    • Si usa Windows Server 2008 o Windows Server 2008 R2:

      • En la barra de tareas, haga clic en Inicio, seleccione Herramientas administrativas y, a continuación, haga clic en Administrador de Internet Information Services (IIS).
    • Si usa Windows Vista o Windows 7:

      • En la barra de tareas, haga clic en Inicio y, luego, haga clic en Panel de control.
      • Haga doble clic en Herramientas administrativas y, a continuación, haga doble clic en Administrador de Internet Information Services (IIS).
  2. En el panel Conexiones, vaya a la conexión, sitio u aplicación de la que quiere modificar la configuración del filtrado de solicitudes.

  3. En el panel Página principal, haga doble clic en Filtrado de solicitudes.
    Screenshot of the Default Web Site Home screen, showing the Failed Request Tracing Rules, Handler Mappings, and H T T P Redirect options.

  4. En el panel Filtrado de solicitudes, haga clic en la pestaña Encabezados y, a continuación, haga clic en Agregar encabezado... en el panel Acciones.
    Screenshot of the Request Filtering pane, showing the H T T P Verbs and Headers tabs.

  5. En el cuadro de diálogo Agregar encabezado, escriba el encabezado HTTP y el tamaño máximo que desee para el límite de encabezados y, a continuación, haga clic en Aceptar.
    Screenshot of the Add Header dialog box, showing the Header and Size limit fields.

    Por ejemplo, el encabezado "Content-type" contiene el tipo MIME para una solicitud. Especificar un valor de 100 limitaría la longitud del encabezado "Content-type" a 100 bytes.

Configuración

Atributos

Atributo Descripción
maxAllowedContentLength Atributo uint opcional.

Especifica la longitud máxima del contenido de una solicitud, en bytes.

El valor predeterminado es 30000000, que son alrededor de 28,6 MB.
maxQueryString Atributo uint opcional.

Especifica la longitud máxima de la cadena de consulta, en bytes.

El valor predeterminado es 2048.
maxUrl Atributo uint opcional.

Especifica la longitud máxima de la dirección URL, en bytes.

El valor predeterminado es 4096.

Elementos secundarios

Elemento Descripción
headerlimits Elemento opcional.

Especifica los límites de tamaño de los encabezados HTML.

Ejemplo de configuración

El siguiente archivo Web.config de ejemplo configurará IIS para denegar el acceso a las solicitudes HTTP donde la longitud del encabezado "Content-type" es mayor que 100 bytes.

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

Código de ejemplo

Los ejemplos de código siguientes configurarán IIS para denegar el acceso a las solicitudes HTTP, donde la longitud del encabezado "Content-type" es mayor 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()