Freigeben über


Hinzufügen von Abfragezeichenfolgensequenzen zum Ablehnen <hinzufügen>

Übersicht

Das <add>-Element des <denyQueryStringSequences>-Elements gibt eine eindeutige Abfolge von Abfragezeichenfolgenzeichen an, die IIS verweigert, wodurch Angriffe auf dem Webserver verhindert werden, die die Abfragezeichenfolge verwenden, um die Angriffs-Payload zuzustellen.

Hinweis

Sie können die Abfragezeichenfolgensequenzen in dieser Auflistung überschreiben, indem Sie der <alwaysAllowedQueryStrings>-Auflistung Abfragezeichenfolgensequenzen hinzufügen.

Hinweis

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

HTTP-Unterstatus Beschreibung
404.18 Abfragezeichenfolgensequenz verweigert

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

Kompatibilität

Version Hinweise
IIS 10.0 Das <add>-Element wurde in IIS 10.0 nicht geändert.
IIS 8.5 Das <add>-Element wurde in IIS 8.5 nicht geändert.
IIS 8.0 Das <add>-Element wurde in IIS 8.0 nicht geändert.
IIS 7.5 Das <add>-Element des <denyQueryStringSequences>-Elements wird als Feature von IIS 7.5 ausgeliefert.
IIS 7.0 Das <add>-Element des <denyQueryStringSequences>-Elements wurde als Update für IIS 7.0 eingeführt, das über den Microsoft Knowledge Base-Artikel 957508 (https://support.microsoft.com/kb/957508) verfügbar ist.
IIS 6.0 Das <denyQueryStringSequences>-Element entspricht ungefähr dem Abschnitt [DenyQueryStringSequences], der URLScan 3.0 hinzugefügt wurde.

Setup

Die Standardinstallation von IIS 7 und höher umfasst den Rollendienst oder das Feature zur 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 an expanded menu within the Roles and Features wizard. Request Filtering (Installed) is 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 Schaltfläche „Start“ 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 Internetinformationsdienste, erweitern Sie WWW-Dienste, dann Sicherheit und wählen Sie dann Anforderungsfilterung aus.
    Screenshot of the Windows Features dialog box. Request Filtering is highlighted in the expanded Security menu.
  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 Rollendienste hinzufü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 Add Role Services Wizard displaying the Select Role Services page. Request Filtering is highlighted in the menu.
  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 Systemsteuerung auf Programme und Funktionen und dann auf Windows-Features aktivieren oder deaktivieren.
  3. Erweitern Sie Internetinformationsdienste, dann World Wide Web Services und dann Sicherheit.
  4. Wählen Sie Anforderungsfilterung und klicken Sie dann auf OK.
    Screenshot of the Windows Features dialog box with Request Filtering highlighted in the menu.

Gewusst wie

So verweigern Sie eine Abfragezeichenfolgensequenz

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

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

      • Klicken Sie auf der Taskleiste auf Server-Manager, dann auf Tools und danach auf Internetinformationsdienste-Manager (IIS).
    • 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 Verwaltung und doppelklicken Sie dann auf den Internetinformationsdienste (IIS) Manager.
    • Wenn Sie Windows Server 2008 oder Windows Server 2008 R2 verwenden:

      • Klicken Sie auf der Taskleiste auf Start, zeigen Sie auf Verwaltung und 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 Verwaltung und doppelklicken Sie dann auf den Internet Information Services (IIS) Manager.
  2. Wechseln Sie im Bereich „Verbindungen“ zu der Verbindung, zur Site, zur Anwendung oder zum Verzeichnis, für die Sie die Einstellungen für die Anforderungsfilterung ändern möchten.

  3. Doppelklicken Sie im Bereich Start auf Anforderungsfilterung.

  4. Klicken Sie im Bereich Anforderungsfilterung auf die Registerkarte Abfragezeichenfolgen und dann im Bereich Aktionen auf Abfragezeichenfolge verweigern....

  5. Geben Sie im Dialogfeld Abfragezeichenfolge verweigern die Abfragezeichenfolgensequenz ein, die Sie blockieren möchten, und klicken Sie dann auf OK.

Konfiguration

Das <add>-Element des <denyQueryStringSequences>-Elements wird auf Site-, Anwendungs- oder Verzeichnisebene konfiguriert.

Attribute

Attribut Beschreibung
sequence Optionales Zeichenfolgeattribut.

Gibt eine eindeutige Abfragezeichenfolgensequenz an, die verweigert werden soll.

Es ist kein Standardwert vorhanden.

Untergeordnete Elemente

Keine.

Konfigurationsbeispiel

Im folgenden Beispiel wird eine Kombination aus einem <denyQueryStringSequences>-Element und einem <alwaysAllowedQueryStrings>-Element veranschaulicht, das alle Abfragezeichenfolgen verweigert, wenn sie eine von zwei bestimmten Zeichensequenzen enthalten, jedoch immer eine bestimmte Abfragezeichenfolge zulassen, die beide dieser beiden spezifischen Zeichensequenzen in einer bestimmten Reihenfolge enthält.

<system.webServer>
   <security>
      <requestFiltering>
         <denyQueryStringSequences>
            <add sequence="bad" />
            <add sequence="sequence" />
         </denyQueryStringSequences>
         <alwaysAllowedQueryStrings>
            <add queryString="bad=sequence" />
         </alwaysAllowedQueryStrings>
      </requestFiltering>
   </security>
</system.webServer>

Beispielcode

Die folgenden Beispiele veranschaulichen das Hinzufügen einer Abfragezeichenfolgensequenz, die auf der Standardwebsite verweigert wird.

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/security/requestFiltering /+"denyQueryStringSequences.[sequence='bad_querystring_sequence']"

PowerShell

$denyQueryStringSequences = Get-IISConfigSection -CommitPath 'Default Web Site' -SectionPath 'system.webServer/security/requestFiltering' | Get-IISConfigCollection -CollectionName 'denyQueryStringSequences'
New-IISConfigCollectionElement -ConfigCollection $denyQueryStringSequences -ConfigAttribute @{ 'sequence' = 'bad_querystring_sequence' }

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");

         ConfigurationElementCollection denyQueryStringSequencesCollection = requestFilteringSection.GetCollection("denyQueryStringSequences");
         ConfigurationElement addElement = denyQueryStringSequencesCollection.CreateElement("add");
         addElement["sequence"] = @"bad_querystring_sequence";
         denyQueryStringSequencesCollection.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 denyQueryStringSequencesCollection As ConfigurationElementCollection = requestFilteringSection.GetCollection("denyQueryStringSequences")
      Dim addElement As ConfigurationElement = denyQueryStringSequencesCollection.CreateElement("add")
      addElement("sequence") = "bad_querystring_sequence"
      denyQueryStringSequencesCollection.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 denyQueryStringSequencesCollection = requestFilteringSection.ChildElements.Item("denyQueryStringSequences").Collection;
var addElement = denyQueryStringSequencesCollection.CreateNewElement("add");
addElement.Properties.Item("sequence").Value = "bad_querystring_sequence";
denyQueryStringSequencesCollection.AddElement(addElement);

adminManager.CommitChanges();

VBScript

Set adminManager = 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 denyQueryStringSequencesCollection = requestFilteringSection.ChildElements.Item("denyQueryStringSequences").Collection
Set addElement = denyQueryStringSequencesCollection.CreateNewElement("add")
addElement.Properties.Item("sequence").Value = "bad_querystring_sequence"
denyQueryStringSequencesCollection.AddElement(addElement)

adminManager.CommitChanges()