Freigeben über


Request Limits <requestLimits>

Übersicht

Das <requestLimits>-Ellement gibt Grenzwerte für HTTP-Anforderungen an, die vom Webserver verarbeitet werden. Diese Grenzwerte umfassen die maximale Größe einer Anforderung, die maximale URL-Länge und die maximale Länge für eine Abfragezeichenfolge. Darüber hinaus kann das <requestLimits> Element eine Auflistung von benutzerdefinierten HTTP-Headergrenzwerten im <headerLimits> Element enthalten, mit der Sie benutzerdefinierte Einstellungen für HTTP-Header definieren können.

Hinweis

Wenn die Anforderungsfilterung eine HTTP-Anforderung blockiert, da eine HTTP-Anforderung die Anforderungsgrenzwerte überschreitet, gibt IIS 7 einen HTTP 404-Fehler an den Client zurück und protokolliert einen der folgenden HTTP-Status mit einem eindeutigen Unterstatus, der den Grund identifiziert, warum die Anforderung verweigert wurde:

HTTP-Substatus Beschreibung
404.14 URL zu lang
404.15 Abfragezeichenfolge zu lang
413.1 Inhaltslänge zu groß

Mit diesen Unterstatus können Webadministratoren ihre IIS-Protokolle analysieren und potenzielle Bedrohungen identifizieren.

Wenn eine HTTP-Anforderung außerdem die Headergrenzwerte überschreitet, die im <headerLimits> Element definiert sind, gibt IIS 7 einen HTTP 404-Fehler an den Client mit dem folgenden Unterstatus zurück:

HTTP-Substatus Beschreibung
431 Anforderungsheader zu lang

Kompatibilität

Version Hinweise
IIS 10.0 Das <requestLimits> Element wurde in IIS 10.0 nicht geändert.
IIS 8.5 Das <requestLimits> Element wurde in IIS 8.5 nicht geändert.
IIS 8.0 Das <requestLimits> Element wurde in IIS 8.0 nicht geändert.
IIS 7.5 Das <requestLimits> Element wurde in IIS 7.5 nicht geändert.
IIS 7.0 Das <requestLimits>-Element der <requestFiltering>-Auflistung wurde in IIS 7.0 eingeführt.
IIS 6.0 Das <requestLimits> Element ersetzt die IIS 6.0 UrlScan [RequestLimits]-Features.

Setup

Die Standardinstallation von IIS 7 und höher umfasst den Rollendienst oder das Feature Anforderungsfilterung. Wenn der Rollendienst für die Anforderungsfilterung oder das Feature deinstalliert wird, können Sie ihn mit den folgenden Schritten erneut installieren.

Windows Server 2012 oder Windows Server 2012 R2

  1. Klicken Sie auf der Taskleiste auf Server-Manager.
  2. Klicken Sie im Server-Manager auf Verwalten und dann auf Rollen und Features hinzufügen.
  3. Klicken Sie im Assistenten zum Hinzufügen von Rollen und Features auf Weiter. Wählen Sie den Installationstyp aus, und klicken Sie auf Weiter. Wählen Sie den Zielserver aus, und klicken Sie auf Weiter.
  4. Erweitern Sie auf der Seite Serverrollen den Webserver (IIS), erweitern Sie den Webserver, erweitern Sie Sicherheit, und wählen Sie dann Anforderungsfilterung aus. Klicken Sie auf Weiter.
    Screenshot of the Request Filtering option being highlighted. .
  5. Klicken Sie auf der Seite Features auswählen auf Weiter.
  6. Klicken Sie auf der Seite Installationsauswahl bestätigen auf Installieren.
  7. Klicken Sie auf der Seite Ergebnisse auf Schließen.

Windows 8 oder Windows 8.1

  1. Bewegen Sie auf dem Startbildschirm den Mauszeiger ganz nach links unten, klicken Sie mit der rechten Maustaste auf die Starttaste und klicken Sie dann auf Systemsteuerung.
  2. Klicken Sie in der Systemsteuerungauf Programme und dann auf „Windows-Features aktivieren oder deaktivieren“.
  3. Erweitern Sie unter InternetinformationsdiensteWWW-Dienste, dann Sicherheit und wählen Sie dann Anforderungsfilterung aus.
    Screenshot of the Request Filtering folder being highlighted.
  4. Klicken Sie auf OK.
  5. Klicken Sie auf Schließen.

Windows Server 2008 oder Windows Server 2008 R2

  1. Klicken Sie auf der Taskleiste auf Start, zeigen Sie auf Verwaltungstools, und klicken Sie dann auf Server-Manager.
  2. Erweitern Sie im Hierarchiebereich des Server-Managers die Rollen und klicken Sie dann auf den Webserver (IIS) .
  3. Scrollen Sie im Bereich Webserver (IIS) zum Abschnitt Rollendienste, und klicken Sie dann auf Rollendienstehinzufügen.
  4. Wählen Sie auf der Seite Rollendienste auswählen des Assistenten Rollendienste hinzufügenVerwaltungsdienst aus, und klicken Sie dann auf Weiter.
    Screenshot of the Request Filtering option being highlighted and the only selected option.
  5. Klicken Sie auf der Seite Installationsauswahl bestätigen auf Installieren.
  6. Klicken Sie auf der Seite Ergebnisse auf Schließen.

Windows Vista oder Windows 7

  1. Klicken Sie auf der Taskleiste auf Start und dann auf Systemsteuerung.
  2. Klicken Sie in der Systemsteuerungauf Programmeund dann auf Windows-Features aktivieren oder deaktivieren.
  3. Erweitern Sie Internetinformationsdienste, dann World Wide Web Services und dann Sicherheit.
  4. Wählen Sie Anforderungsfilterungaus, und klicken Sie dann auf OK.
    Screenshot of the Request Filtering folder being selected and highlighted.

Gewusst wie

Hinweis für IIS 7.0-Nutzer: Einige der Schritte in diesem Abschnitt erfordern möglicherweise, dass Sie das Microsoft Administration Pack für IIS 7.0 installieren, das eine Benutzeroberfläche für die Anforderungsfilterung enthält. Informationen zum Installieren des Microsoft Administration Pack für IIS 7.0 finden Sie unter der folgenden URL:

Bearbeiten der Featureeinstellungen und Anforderungsgrenzwerte für die Anforderungsfilterung

  1. Öffnen Sie den Internet Information Services (IIS) Manager:

    • Wenn Sie Windows Server 2012 oder Windows Server 2012 R2 verwenden:

      • Klicken Sie in der Taskleiste auf Server-Managerdann auf Toolsund dann auf den Internet Information Services (IIS) Manager.
    • Wenn Sie Windows 8 oder Windows 8.1 verwenden:

      • Halten Sie die Windows-Taste gedrückt, drücken Sie den Buchstaben X, und klicken Sie dann auf "Systemsteuerung".
      • Klicken Sie auf Verwaltungund doppelklicken Sie dann auf den Internet Information Services (IIS) Manager.
    • Wenn Sie Windows Server 2008 oder Windows Server 2008 R2 verwenden:

      • Klicken Sie auf der Taskleiste auf Start, zeigen Sie auf Verwaltungund dann auf den Internet Information Services (IIS) Manager.
    • Wenn Sie Windows Vista oder Windows 7 verwenden:

      • Klicken Sie auf der Taskleiste auf Start und dann auf Systemsteuerung.
      • Doppelklicken Sie auf Verwaltungund doppelklicken Sie dann auf den Internet Information Services (IIS) Manager.
  2. Wechseln Sie im Bereich Verbindungen zu der Verbindung, zum Standort, zur Anwendung oder zum Verzeichnis, für die Sie die Einstellungen für die Anforderungsfilterung ändern möchten.

  3. Doppelklicken Sie im Bereich Startseite auf Anforderungsfilterung.
    Screenshot of the Default Web Site Home screen's Home pane.

  4. Klicken Sie im Bereich Aktionen auf Featureeinstellungen bearbeiten....
    Screenshot of the Request Filtering screen, showing the File Name Extensions and Hidden Segment tab.

  5. Geben Sie Ihre Optionen an, und klicken Sie dann auf OK.
    Screenshot of the Edit Request Filtering Settings dialog box, showing four selectable fields. Sie können beispielsweise die folgenden Änderungen vornehmen:

    • Ändern Sie die maximale URL-Länge in 2 KB, indem Sie 2.048 angeben.
    • Ändern Sie die maximale Länge der Abfragezeichenfolge auf 1 KB, indem Sie 1024 angeben.
    • Verweigern des Zugriffs auf nicht aufgelistete HTTP-Verben durch Deaktivieren des Kontrollkästchens Nicht aufgelistete Verben zulassen.

Hinzufügen von Grenzwerten für HTTP-Header

  1. Öffnen Sie den Internet Information Services (IIS) Manager:

    • Wenn Sie Windows Server 2012 oder Windows Server 2012 R2 verwenden:

      • Klicken Sie in der Taskleiste auf Server-Managerdann auf Toolsund dann auf den Internet Information Services (IIS) Manager.
    • Wenn Sie Windows 8 oder Windows 8.1 verwenden:

      • Halten Sie die Windows-Taste gedrückt, drücken Sie den Buchstaben X, und klicken Sie dann auf "Systemsteuerung".
      • Klicken Sie auf Verwaltungund doppelklicken Sie dann auf den Internet Information Services (IIS) Manager.
    • Wenn Sie Windows Server 2008 oder Windows Server 2008 R2 verwenden:

      • Klicken Sie auf der Taskleiste auf Start, zeigen Sie auf Verwaltungund dann auf den Internet Information Services (IIS) Manager.
    • Wenn Sie Windows Vista oder Windows 7 verwenden:

      • Klicken Sie auf der Taskleiste auf Start und dann auf Systemsteuerung.
      • Doppelklicken Sie auf Verwaltungund doppelklicken Sie dann auf den Internet Information Services (IIS) Manager.
  2. Wechseln Sie im Bereich Verbindungen zu der Verbindung, zum Standort, zur Anwendung oder zum Verzeichnis, für die Sie die Einstellungen für die Anforderungsfilterung ändern möchten.

  3. Doppelklicken Sie im Bereich Startseite auf Anforderungsfilterung.
    Screenshot of the Default Web Site Home screen, showing the Failed Request Tracing Rules, Handler Mappings, and H T T P Redirect options.

  4. Klicken Sie im Bereich Anforderungsfilterung auf die Registerkarte Kopfzeilen und dann im Bereich Aktionen auf Kopfzeile hinzufügen.
    Screenshot of the Request Filtering pane, showing the H T T P Verbs and Headers tabs.

  5. Geben Sie im Dialogfeld Kopfzeile hinzufügen den HTTP-Header und die maximale Größe für die Kopfzeile ein, und klicken Sie dann auf OK.
    Screenshot of the Add Header dialog box, showing the Header and Size limit fields.

    Der Header „Content-type“ enthält z. B. den MIME-Typ für eine Anforderung. Wenn Sie einen Wert von 100 angeben, wird die Länge des Headers „Content-type“ auf 100 Bytes begrenzt.

Konfiguration

Attribute

Attribut Beschreibung
maxAllowedContentLength Optionales uint-Attribut.

Gibt die maximal zulässige Inhaltslänge in Bytes in einer Anforderung an.

Der Standardwert lautet 30000000, also in etwa 28,6 MB.
maxQueryString Optionales uint-Attribut.

Gibt die maximale Länge der Abfragezeichenfolge in Byte an.

Der Standardwert ist 2048.
maxUrl Optionales uint-Attribut.

Gibt die maximale Länge der URL in Byte an.

Der Standardwert ist 4096.

Untergeordnete Elemente

Element Beschreibung
headerlimits Optionales Element.

Gibt Größenbeschränkungen für HTML-Header an.

Konfigurationsbeispiel

Die folgende Beispieldatei "Web.config" konfiguriert IIS so, dass der Zugriff für HTTP-Anforderungen verweigert wird, wobei die Länge des Headers "Content-type" größer als 100 Byte ist.

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

Beispielcode

Die folgenden Codebeispiele konfigurieren IIS so, dass der Zugriff für HTTP-Anforderungen verweigert wird, wobei die Länge des Headers "Content-type" größer als 100 Byte ist.

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