Partager via


Filtrage des demandes <requestFiltering>

Vue d’ensemble

Le filtrage des demandes est une fonctionnalité de sécurité intégrée qui a été introduite dans Internet Information Services (IIS) 7.0 et qui remplace une grande partie des fonctionnalités disponibles via le module complémentaire UrlScan pour IIS 6.0. Tous les paramètres de la fonctionnalité de filtrage des demandes se trouvent dans l’élément <requestFiltering>, qui contient plusieurs éléments enfants pour chacun des composants de la fonctionnalité suivants :

  • <denyUrlSequences> : cet élément peut contenir une collection des modèles de séquence d’URL qui seront refusés par IIS 7. Par exemple, vous pouvez refuser certaines parties de séquences d’URL qui sont susceptibles d’être exploitées par un attaquant.
  • <fileExtensions> : cet élément peut contenir une collection des extensions de nom de fichier qui seront refusées ou autorisées par IIS 7. Par exemple, vous pouvez bloquer toutes les demandes de fichiers Web.config.
  • <hiddenSegments> : cet élément peut contenir une collection des URL qui ne pourront pas être parcourues. Par exemple, vous pouvez refuser les demandes d’accès au dossier ASP.NET App_Code.
  • <requestLimits> : cet élément contient les paramètres d’URL, de contenu et de longueurs de chaîne de requête. Il peut également contenir une collection de longueurs maximales définies par l’utilisateur pour les en-têtes HTTP.
  • <verbs> : cet élément peut contenir une collection des verbes HTTP qui seront refusés ou autorisés par IIS 7. Par exemple, vous pouvez bloquer toutes les requêtes HTTP TRACE.

Nouveautés dans IIS 7.5

IIS 7.5 a ajouté plusieurs composants supplémentaires à la fonctionnalité de filtrage des demandes :

  • <alwaysAllowedUrls> : cet élément peut contenir une collection des URL qui seront toujours autorisées par le filtrage des demandes.
  • <alwaysAllowedQueryStrings> : cet élément peut contenir une collection des chaînes de requête qui seront toujours autorisées par le filtrage des demandes.
  • <denyQueryStringSequences> : cet élément peut contenir une collection des séquences de chaîne de requête qui seront toujours refusées par le filtrage des demandes. Cela permet aux administrateurs de bloquer les séquences de chaîne de requête potentiellement dangereuses qu’ils détectent.
  • <filteringRules> : cet élément peut contenir une collection des règles personnalisées de filtrage des demandes. Cette collection permet aux administrateurs de créer des règles de filtrage des demandes qui sont personnalisées selon des critères spécifiques.

Nouveautés dans IIS 10.0

IIS 10.0 a ajouté l’attribut removeServerHeader, qui permet de supprimer l’envoi de l’en-tête du serveur HTTP aux clients distants.

Sous-codes d’état pour l’erreur HTTP 404

Quand le filtrage des demandes bloque une requête HTTP, IIS 7 renvoie une erreur HTTP 404 au client et journalise l’état HTTP avec un sous-code d’état unique qui identifie le motif du refus de la requête. Par exemple :

Sous-code d’état HTTP Description
404.5 Séquence d’URL refusée
404.6 Verbe refusé
404.7 Extension de fichier refusée
404.8 Espace de noms masqué
404.11 URL avec une double séquence d’échappement
404.12 URL avec des caractères de bits élevés
404.14 URL trop longue
404.15 Chaîne de requête trop longue
404.18 Séquence de chaîne de requête refusée
404.19 Refus par une règle de filtrage
413.1 Longueur du contenu trop grande
431 En-tête de demande trop long

Ces sous-codes d’état permettent aux administrateurs web d’analyser leurs journaux IIS et d’identifier les menaces potentielles.

Compatibilité

Version Notes
IIS 10.0 La possibilité de supprimer l’en-tête du serveur a été ajoutée dans IIS 10.0.
IIS 8.5 L’élément <requestFiltering> n’a fait l’objet d’aucune modification dans IIS 8.5.
IIS 8.0 L’élément <requestFiltering> n’a fait l’objet d’aucune modification dans IIS 8.0.
IIS 7.5 Dans IIS 7.5, le filtrage des demandes est fourni avec l’attribut unescapeQueryString et les éléments alwaysAllowedUrls, alwaysAllowedQueryStrings, denyQueryStringSequences et filteringRules. Ces éléments ont d’abord été introduits dans le cadre d’une mise à jour pour IIS 7.0 qui est disponible via l’article 957508 de la Base de connaissances Microsoft (https://support.microsoft.com/kb/957508).
IIS 7.0 L’élément <requestFiltering> a été introduit dans IIS 7.0.
IIS 6.0 L’élément <requestFiltering> remplace les fonctionnalités disponibles dans UrlScan pour IIS 6.0.

Programme d’installation

L’installation par défaut d’IIS 7 et des versions ultérieures inclut le service de rôle ou la fonctionnalité Filtrage des demandes. Si le service de rôle ou la fonctionnalité Filtrage des demandes a été désinstallé, vous pouvez le réinstaller en effectuant les étapes suivantes.

Windows Server 2012 ou Windows Server 2012 R2

  1. Dans la barre des tâches, cliquez sur Gestionnaire de serveur.
  2. Dans le Gestionnaire de serveur, cliquez sur le menu Gérer, puis cliquez sur Ajouter des rôles et des fonctionnalités.
  3. Dans l’Assistant Ajout de rôles et de fonctionnalités, cliquez sur Suivant. Sélectionnez le type d’installation, puis cliquez sur Suivant. Sélectionnez le serveur de destination, puis cliquez sur Suivant.
  4. Dans la page Rôles serveur, développez tour à tour Serveur web (IIS), Serveur web et Sécurité, puis sélectionnez Filtrage des demandes. Sélectionnez Suivant.
    Image of Web Server and Security pane expanded with Request filtering selected. .
  5. Dans la page Sélectionner les composants, cliquez sur Suivant.
  6. Dans la page Confirmer les sélections d’installation, cliquez sur Installer.
  7. Dans la page Résultats , cliquez sur Fermer.

Windows 8 ou Windows 8.1

  1. Dans l’écran d’accueil, déplacez le pointeur jusqu’au coin inférieur gauche, cliquez avec le bouton droit sur le bouton Démarrer, puis cliquez sur Panneau de configuration.
  2. Dans le Panneau de configuration, cliquez sur Programmes et fonctionnalités, puis cliquez sur Activer ou désactiver des fonctionnalités Windows.
  3. Développez tour à tour Internet Information Services, Services World Wide Web et Sécurité, puis sélectionnez Filtrage des demandes.
    Image of World Wide Web Services and Security pane expanded with Request Filtering highlighted.
  4. Cliquez sur OK.
  5. Cliquez sur Fermer.

Windows Server 2008 ou Windows Server 2008 R2

  1. Dans la barre des tâches, cliquez sur Démarrer, pointez sur Outils d’administration, puis cliquez sur Gestionnaire de serveur.
  2. Dans le volet de la hiérarchie du Gestionnaire de serveur, développez Rôles, puis cliquez sur Serveur web (IIS).
  3. Dans le volet Serveur web (IIS), faites défiler le contenu jusqu’à la section Services de rôle, puis cliquez sur Ajouter des services de rôle.
  4. Dans la page Sélectionner des services de rôle de l’Assistant Ajout de services de rôle, sélectionnez Filtrage des demandes, puis cliquez sur Suivant.
    Image of Select Role Services page with Security pane expanded and Request Filtering selected.
  5. Dans la page Confirmer les sélections pour l'installation, cliquez sur Installer.
  6. Dans la page Résultats , cliquez sur Fermer.

Windows Vista ou Windows 7

  1. Dans la barre des tâches, cliquez sur Démarrer, puis cliquez sur Panneau de configuration.
  2. Dans le Panneau de configuration, cliquez sur Programmes et fonctionnalités, puis cliquez sur Activer ou désactiver des fonctionnalités Windows.
  3. Développez tour à tour Internet Information Services, Services World Wide Web et Sécurité.
  4. Sélectionnez Filtrage des demandes, puis cliquez sur OK.
    Screenshot of World Wide Web Services and Security node expanded and Request Filtering highlighted.

Procédure

Remarque pour les utilisateurs d’IIS 7.0 : Certaines étapes décrites dans cette section peuvent nécessiter l’installation du Pack d’administration Microsoft pour IIS 7.0, qui inclut une interface utilisateur pour le filtrage des demandes. Vous pouvez installer le Pack d’administration Microsoft pour IIS 7.0 à partir de l’URL suivante :


Modifier les paramètres du filtrage des demandes et les limites des demandes

  1. Ouvrez le Gestionnaire Internet Information Services (IIS) :

    • Si vous utilisez Windows Server 2012 ou Windows Server 2012 R2 :

      • Dans la barre des tâches, cliquez sur Gestionnaire de serveur, cliquez sur Outils, puis cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows 8 ou Windows 8.1 :

      • Maintenez la touche Windows enfoncée, appuyez sur la lettre X, puis cliquez sur Panneau de configuration.
      • Cliquez sur Outils d’administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows Server 2008 ou Windows Server 2008 R2 :

      • Dans la barre des tâches, cliquez sur Démarrer, pointez sur Outils d’administration, puis cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows Vista ou Windows 7 :

      • Dans la barre des tâches, cliquez sur Démarrer, puis cliquez sur Panneau de configuration.
      • Double-cliquez sur Outils d’administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
  2. Dans le volet Connexions, accédez à la connexion, au site, à l’application ou au répertoire pour lequel vous souhaitez modifier les paramètres de filtrage des demandes.

  3. Dans le volet Accueil, double-cliquez sur Filtrage des demandes.
    Image of Default Web Site Home pane showing Request Filtering highlighted.

  4. Cliquez sur Modifier les paramètres de la fonctionnalité... dans le volet Actions.
    Image of Request Filtering page displaying Edit Feature Settings in the Actions pane.

  5. Spécifiez les options souhaitées, puis cliquez sur OK.
    Screenshot of Edit Request Filtering Settings dialog box showing Allow unlisted file name extensions selected. Par exemple, vous pouvez apporter les modifications suivantes :

    • Changer la longueur maximale des URL à 2 Ko en spécifiant la valeur 2048.
    • Changer la longueur de chaîne de requête maximale à 1 Ko en spécifiant la valeur 1024.
    • Refuser l’accès aux verbes HTTP non listés en décochant la case Autoriser les verbes non listés.

Refuser une séquence d’URL

  1. Ouvrez le Gestionnaire Internet Information Services (IIS) :

    • Si vous utilisez Windows Server 2012 ou Windows Server 2012 R2 :

      • Dans la barre des tâches, cliquez sur Gestionnaire de serveur, cliquez sur Outils, puis cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows 8 ou Windows 8.1 :

      • Maintenez la touche Windows enfoncée, appuyez sur la lettre X, puis cliquez sur Panneau de configuration.
      • Cliquez sur Outils d’administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows Server 2008 ou Windows Server 2008 R2 :

      • Dans la barre des tâches, cliquez sur Démarrer, pointez sur Outils d’administration, puis cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows Vista ou Windows 7 :

      • Dans la barre des tâches, cliquez sur Démarrer, puis cliquez sur Panneau de configuration.
      • Double-cliquez sur Outils d’administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
  2. Dans le volet Connexions, accédez à la connexion, au site, à l’application ou au répertoire pour lequel vous souhaitez modifier les paramètres de filtrage des demandes.

  3. Dans le volet Accueil, double-cliquez sur Filtrage des demandes.
    Image of Default Web Site Home pane showing Request Filtering application highlighted.

  4. Dans le volet Filtrage des demandes, cliquez sur l’onglet Séquences d’URL refusées, puis cliquez sur Ajouter une séquence d’URL... dans le volet Actions.
    Screenshot of Request Filtering page with Deny U R L Sequences tab in Actions pane.

  5. Dans la boîte de dialogue Ajouter une séquence de refus, entrez la séquence d’URL que vous souhaitez bloquer, puis cliquez sur OK.
    Image of Add Deny Sequence dialog box.
    Par exemple, pour empêcher la traversée de répertoires sur votre serveur, entrez deux points (« .. ») dans la boîte de dialogue.


Refuser l’accès à une extension de nom de fichier spécifique

  1. Ouvrez le Gestionnaire Internet Information Services (IIS) :

    • Si vous utilisez Windows Server 2012 ou Windows Server 2012 R2 :

      • Dans la barre des tâches, cliquez sur Gestionnaire de serveur, cliquez sur Outils, puis cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows 8 ou Windows 8.1 :

      • Maintenez la touche Windows enfoncée, appuyez sur la lettre X, puis cliquez sur Panneau de configuration.
      • Cliquez sur Outils d’administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows Server 2008 ou Windows Server 2008 R2 :

      • Dans la barre des tâches, cliquez sur Démarrer, pointez sur Outils d’administration, puis cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows Vista ou Windows 7 :

      • Dans la barre des tâches, cliquez sur Démarrer, puis cliquez sur Panneau de configuration.
      • Double-cliquez sur Outils d’administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
  2. Dans le volet Connexions, accédez à la connexion, au site, à l’application ou au répertoire pour lequel vous souhaitez modifier les paramètres de filtrage des demandes.

  3. Dans le volet Accueil, double-cliquez sur Filtrage des demandes.
    Screenshot of Home pane displaying Request Filtering application selected.

  4. Dans le volet Filtrage des demandes, cliquez sur l’onglet Extensions de nom de fichier, puis cliquez sur Refuser l’extension de nom de fichier... dans le volet Actions.
    Image of Request Filtering application highlighted in Default Web Site Home.

  5. Dans la boîte de dialogue Refuser l’extension de nom de fichier, entrez l’extension de nom de fichier que vous souhaitez bloquer, puis cliquez sur OK.
    Image of Deny File Name Extension dialog box displaying file name extension typed in the respective field. Par exemple, pour empêcher l’accès aux fichiers ayant l’extension de nom de fichier .inc, entrez « inc » dans la boîte de dialogue.


Ajouter un segment masqué

  1. Ouvrez le Gestionnaire Internet Information Services (IIS) :

    • Si vous utilisez Windows Server 2012 ou Windows Server 2012 R2 :

      • Dans la barre des tâches, cliquez sur Gestionnaire de serveur, cliquez sur Outils, puis cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows 8 ou Windows 8.1 :

      • Maintenez la touche Windows enfoncée, appuyez sur la lettre X, puis cliquez sur Panneau de configuration.
      • Cliquez sur Outils d’administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows Server 2008 ou Windows Server 2008 R2 :

      • Dans la barre des tâches, cliquez sur Démarrer, pointez sur Outils d’administration, puis cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows Vista ou Windows 7 :

      • Dans la barre des tâches, cliquez sur Démarrer, puis cliquez sur Panneau de configuration.
      • Double-cliquez sur Outils d’administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
  2. Dans le volet Connexions, accédez à la connexion, au site, à l’application ou au répertoire pour lequel vous souhaitez modifier les paramètres de filtrage des demandes.

  3. Dans le volet Accueil, double-cliquez sur Filtrage des demandes.
    Screenshot of Home pane in Internet Information Services I I S Manager with Request Filtering highlighted.

  4. Dans le volet Filtrage des demandes, cliquez sur l’onglet Segments masqués, puis cliquez sur Ajouter un segment masqué... dans le volet Actions.
    Image of request Filtering pane displaying Hidden Segments tab with Add Hidden Segments option in the Actions pane.

  5. Dans la boîte de dialogue Ajouter un segment masqué, entrez le chemin relatif à masquer, puis cliquez sur OK.
    Screenshot of Add Hidden Segment dialog box showing the relative path entered in the Hidden Segment field.


Ajouter des limites pour les en-têtes HTTP

  1. Ouvrez le Gestionnaire Internet Information Services (IIS) :

    • Si vous utilisez Windows Server 2012 ou Windows Server 2012 R2 :

      • Dans la barre des tâches, cliquez sur Gestionnaire de serveur, cliquez sur Outils, puis cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows 8 ou Windows 8.1 :

      • Maintenez la touche Windows enfoncée, appuyez sur la lettre X, puis cliquez sur Panneau de configuration.
      • Cliquez sur Outils d’administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows Server 2008 ou Windows Server 2008 R2 :

      • Dans la barre des tâches, cliquez sur Démarrer, pointez sur Outils d’administration, puis cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows Vista ou Windows 7 :

      • Dans la barre des tâches, cliquez sur Démarrer, puis cliquez sur Panneau de configuration.
      • Double-cliquez sur Outils d’administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
  2. Dans le volet Connexions, accédez à la connexion, au site, à l’application ou au répertoire pour lequel vous souhaitez modifier les paramètres de filtrage des demandes.

  3. Dans le volet Accueil, double-cliquez sur Filtrage des demandes.
    Image of Default Web Site Home page with Actions pane and Request Filtering highlighted.

  4. Dans le volet Filtrage des demandes, cliquez sur l’onglet En-têtes, puis cliquez sur Ajouter un en-tête... dans le volet Actions.
    Image of Request Filtering pane displaying Headers tab and Add Header in the Actions pane.

  5. Dans la boîte de dialogue Ajouter un en-tête, entrez l’en-tête HTTP et la limite de taille maximale souhaitée pour l’en-tête, puis cliquez sur OK.
    Screenshot of Add Header dialog box with fields for H T T P Header and Size limit.

    Par exemple, l’en-tête « Content-type » contient le type MIME d’une demande. Par exemple, si vous entrez la valeur 100, la longueur de l’en-tête « Content-type » sera limitée à 100 octets.


Refuser un verbe HTTP

  1. Ouvrez le Gestionnaire Internet Information Services (IIS) :

    • Si vous utilisez Windows Server 2012 ou Windows Server 2012 R2 :

      • Dans la barre des tâches, cliquez sur Gestionnaire de serveur, cliquez sur Outils, puis cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows 8 ou Windows 8.1 :

      • Maintenez la touche Windows enfoncée, appuyez sur la lettre X, puis cliquez sur Panneau de configuration.
      • Cliquez sur Outils d’administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows Server 2008 ou Windows Server 2008 R2 :

      • Dans la barre des tâches, cliquez sur Démarrer, pointez sur Outils d’administration, puis cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows Vista ou Windows 7 :

      • Dans la barre des tâches, cliquez sur Démarrer, puis cliquez sur Panneau de configuration.
      • Double-cliquez sur Outils d’administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
  2. Dans le volet Connexions, accédez à la connexion, au site, à l’application ou au répertoire pour lequel vous souhaitez modifier les paramètres de filtrage des demandes.

  3. Dans le volet Accueil, double-cliquez sur Filtrage des demandes.
    Screenshot of Home pane with Request Filtering application highlighted.

  4. Dans le volet Filtrage des demandes, cliquez sur l’onglet Verbes HTTP, puis cliquez sur Refuser un verbe... dans le volet Actions.
    Image of Request Filtering pane showing H T T P verbs tab and Deny verb option in the Actions pane.

  5. Dans la boîte de dialogue Refuser un verbe, entrez le verbe HTTP que vous souhaitez bloquer, puis cliquez sur OK.
    Image of Deny Verb dialog box with H T T P verb entered in the Verb field.

    Par exemple, pour bloquer les requêtes HTTP TRACE envoyées sur votre serveur, entrez « TRACE » dans la boîte de dialogue.

Configuration

Attributs

Attribut Description
allowDoubleEscaping Attribut booléen facultatif.

Si cet attribut est défini sur true, le filtrage des demandes autorise les URL comportant une double séquence de caractères d’échappement. Si cet attribut est défini sur false, le filtrage des demandes refuse les URL qui contiennent une double séquence de caractères d’échappement.

La valeur par défaut est false.
allowHighBitCharacters Attribut booléen facultatif.

Si cet attribut est défini sur true, le filtrage des demandes autorise les caractères non ASCII dans les URL. Si cet attribut est défini sur false, le filtrage des demandes refuse les URL qui contiennent des caractères de bits élevés.

La valeur par défaut est true.
removeServerHeader Attribut booléen facultatif.

Si cet attribut est défini sur true, le filtrage des demandes supprime l’en-tête du serveur IIS. Si cet attribut est défini sur false, IIS renvoie l’en-tête du serveur par défaut. (Remarque : cet attribut a été ajouté dans IIS 10.0 et ne fonctionne pas dans les versions de Windows antérieures à Windows Server version 1709 ou Windows 10 version 1709.)

La valeur par défaut est false.
unescapeQueryString Attribut booléen facultatif.

Si cet attribut est défini sur true, le filtrage des demandes effectue deux passes sur chaque analyse de chaîne de requête. La première analyse la chaîne de requête brute, alors que la deuxième analyse la chaîne de requête après qu’IIS a décodé toutes les séquences d’échappement. Si cet attribut est défini sur false, le filtrage des demandes analyse uniquement la chaîne de requête brute telle qu’elle est envoyée par le client.

Remarque : Cet attribut a été ajouté dans IIS 7.5.

La valeur par défaut est true.

Éléments enfants

Élément Description
alwaysAllowedQueryStrings Élément facultatif.

Spécifie une collection de chaînes de requête qui seront toujours autorisées par le filtrage des demandes.

Remarque : Cet élément a été ajouté dans IIS 7.5.
alwaysAllowedUrls Élément facultatif.

Spécifie une collection d’URL qui seront toujours autorisées par le filtrage des demandes.

Remarque : Cet élément a été ajouté dans IIS 7.5.
denyQueryStringSequences Élément facultatif.

Spécifie une collection de séquences de chaîne de requête qui seront toujours refusées par le filtrage des demandes.

Remarque : Cet élément a été ajouté dans IIS 7.5.
denyUrlSequences Élément facultatif.

Spécifie les séquences à refuser pour mieux contrer les attaques par manipulation d’URL sur le serveur web.
fileExtensions Élément facultatif.

Spécifie les extensions de nom de fichier autorisées ou refusées pour limiter les types de demandes envoyées au serveur web.
filteringRules Élément facultatif.

Spécifie une collection de règles personnalisées de filtrage des demandes.

Remarque : Cet élément a été ajouté dans IIS 7.5.
hiddenSegments Élément facultatif.

Spécifie que certains segments d’URL peuvent être rendus inaccessibles aux clients.
requestLimits Élément facultatif.

Spécifie les limites des demandes traitées par le serveur web.
verbs Élément facultatif.

Spécifie les verbes HTTP autorisés ou refusés pour limiter les types de demandes envoyées au serveur web.

Exemple Configuration

L’exemple de configuration suivant extrait d’un fichier Web.config effectue plusieurs tâches liées à la sécurité :

  • Il refuse l’accès à deux séquences d’URL. La première séquence empêche la traversée de répertoires, la deuxième séquence empêche l’accès à d’autres flux de données.
  • Il refuse l’accès aux extensions de nom de fichier non listées et aux verbes HTTP non listés.
  • Il définit la longueur maximale d’une URL à 2 Ko, et la longueur maximale d’une chaîne de requête à 1 Ko.
<configuration>
   <system.webServer>
      <security>
         <requestFiltering>
            <denyUrlSequences>
               <add sequence=".." />
               <add sequence=":" />
            </denyUrlSequences>
            <fileExtensions allowUnlisted="false" />
            <requestLimits maxUrl="2048" maxQueryString="1024" />
            <verbs allowUnlisted="false" />
         </requestFiltering>
      </security>
   </system.webServer>
</configuration>

Exemple de code

Les exemples de code suivants montrent comment refuser l’accès à trois séquences d’URL pour le site web par défaut : les traversées de répertoires (« .. »), les autres flux de données (« : ») et les barres obliques inverses (« \ »).

AppCmd.exe

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

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

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

PowerShell

Start-IISCommitDelay

$denyUrlSequences = Get-IISConfigSection -CommitPath 'Default Web Site' -SectionPath 'system.webServer/security/requestFiltering' | Get-IISConfigCollection -CollectionName 'denyUrlSequences'

New-IISConfigCollectionElement -ConfigCollection $denyUrlSequences -ConfigAttribute @{ 'sequence' = '..' }
New-IISConfigCollectionElement -ConfigCollection $denyUrlSequences -ConfigAttribute @{ 'sequence' = ':' }
New-IISConfigCollectionElement -ConfigCollection $denyUrlSequences -ConfigAttribute @{ 'sequence' = '\' }

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

         ConfigurationElementCollection denyUrlSequencesCollection = requestFilteringSection.GetCollection("denyUrlSequences");

         ConfigurationElement addElement = denyUrlSequencesCollection.CreateElement("add");
         addElement["sequence"] = @"..";
         denyUrlSequencesCollection.Add(addElement);

         ConfigurationElement addElement1 = denyUrlSequencesCollection.CreateElement("add");
         addElement1["sequence"] = @":";
         denyUrlSequencesCollection.Add(addElement1);

         ConfigurationElement addElement2 = denyUrlSequencesCollection.CreateElement("add");
         addElement2["sequence"] = @"\";
         denyUrlSequencesCollection.Add(addElement2);

         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 denyUrlSequencesCollection As ConfigurationElementCollection = requestFilteringSection.GetCollection("denyUrlSequences")

      Dim addElement As ConfigurationElement = denyUrlSequencesCollection.CreateElement("add")
      addElement("sequence") = ".."
      denyUrlSequencesCollection.Add(addElement)

      Dim addElement1 As ConfigurationElement = denyUrlSequencesCollection.CreateElement("add")
      addElement1("sequence") = ":"
      denyUrlSequencesCollection.Add(addElement1)

      Dim addElement2 As ConfigurationElement = denyUrlSequencesCollection.CreateElement("add")
      addElement2("sequence") = "\"
      denyUrlSequencesCollection.Add(addElement2)

      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 denyUrlSequencesCollection = requestFilteringSection.ChildElements.Item("denyUrlSequences").Collection;

var addElement = denyUrlSequencesCollection.CreateNewElement("add");
addElement.Properties.Item("sequence").Value = "..";
denyUrlSequencesCollection.AddElement(addElement);

var addElement1 = denyUrlSequencesCollection.CreateNewElement("add");
addElement1.Properties.Item("sequence").Value = ":";
denyUrlSequencesCollection.AddElement(addElement1);

var addElement2 = denyUrlSequencesCollection.CreateNewElement("add");
addElement2.Properties.Item("sequence").Value = "\\";
denyUrlSequencesCollection.AddElement(addElement2);

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 denyUrlSequencesCollection = requestFilteringSection.ChildElements.Item("denyUrlSequences").Collection

Set addElement = denyUrlSequencesCollection.CreateNewElement("add")
addElement.Properties.Item("sequence").Value = ".."
denyUrlSequencesCollection.AddElement(addElement)

Set addElement1 = denyUrlSequencesCollection.CreateNewElement("add")
addElement1.Properties.Item("sequence").Value = ":"
denyUrlSequencesCollection.AddElement(addElement1)

Set addElement2 = denyUrlSequencesCollection.CreateNewElement("add")
addElement2.Properties.Item("sequence").Value = "\"
denyUrlSequencesCollection.AddElement(addElement2)

adminManager.CommitChanges()