Partager via


Chaînes de requête toujours autorisées <alwaysAllowedQueryStrings>

Vue d’ensemble

L’élément <alwaysAllowedQueryStrings> spécifie une collection de chaînes de requête qui seront toujours autorisées par le filtrage des demandes. L’élément <alwaysAllowedQueryStrings> contient une collection d’éléments <add> qui spécifient les modèles de chaîne de requête qui seront autorisés par le filtrage des demandes. Cette configuration remplace les valeurs définies dans la collection <denyQueryStringSequences>.

Compatibilité

Version Notes
IIS 10.0 L’élément <alwaysAllowedQueryStrings> n’a fait l’objet d’aucune modification dans IIS 10.0.
IIS 8.5 L’élément <alwaysAllowedQueryStrings> n’a fait l’objet d’aucune modification dans IIS 8.5.
IIS 8.0 L’élément <alwaysAllowedQueryStrings> n’a fait l’objet d’aucune modification dans IIS 8.0.
IIS 7.5 L’élément <alwaysAllowedQueryStrings> de l’élément <requestFiltering> est fourni en tant que fonctionnalité d’IIS 7.5.
IIS 7.0 L’élément <alwaysAllowedQueryStrings> de l’élément <requestFiltering> a été introduit 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 6.0 L’élément <alwaysAllowedQueryStrings> est à peu près analogue à la section [AlwaysAllowedQueryStrings] qui a été ajoutée à URLScan 3.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 Security pane in Server Roles page expanded displaying Request Filtering highlighted. .
  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 Security and World Wide Web Services pane expanded and Request Filtering option selected.
  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.
    Screenshot of World Wide Web Services and Security pane expanded with 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.
    Image of Internet Information Services and World Wide Web pane displaying Request Filtering selected.

Procédure

Autoriser une séquence de chaîne de requête

  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.

  4. Dans le volet Filtrage des demandes, cliquez sur l’onglet Chaînes de requête, puis cliquez sur Autoriser la chaîne de requête... dans le volet Actions.

  5. Dans la boîte de dialogue Autoriser la chaîne de requête, entrez la séquence de chaîne de requête que vous souhaitez bloquer, puis cliquez sur OK.

Configuration

L’élément <alwaysAllowedQueryStrings> de l’élément <requestFiltering> est configuré au niveau du site, de l’application ou du répertoire.

Attributs

Aucune.

Éléments enfants

Élément Description
add Élément facultatif. Ajoute un modèle de chaîne de requête à la collection des chaînes de requête qui seront toujours autorisées par le filtrage des demandes.
clear Élément facultatif.

Efface la collection des modèles de chaîne de requête qui seront toujours autorisés par le filtrage des demandes.
remove Élément facultatif.

Supprime un modèle de chaîne de requête dans la collection des chaînes de requête qui seront toujours autorisées par le filtrage des demandes.

Exemple Configuration

L’exemple suivant illustre l’utilisation combinée d’un élément <denyQueryStringSequences> et d’un élément <alwaysAllowedQueryStrings> pour refuser toutes les chaînes de requête qui contiennent l’une des deux séquences de caractères spécifiques, mais pour toujours autoriser une chaîne de requête spécifique qui contient ces deux séquences de caractères spécifiques dans un ordre particulier.

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

Exemple de code

Les exemples suivants montrent comment ajouter une chaîne de requête qui sera toujours autorisée sur le site web par défaut.

AppCmd.exe

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

PowerShell

$alwaysAllowedQueryStrings = Get-IISConfigSection -CommitPath 'Default Web Site' -SectionPath 'system.webServer/security/requestFiltering' | Get-IISConfigCollection -CollectionName 'alwaysAllowedQueryStrings'
New-IISConfigCollectionElement -ConfigCollection $alwaysAllowedQueryStrings -ConfigAttribute @{ 'queryString' = 'allowed=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 alwaysAllowedQueryStringsCollection = requestFilteringSection.GetCollection("alwaysAllowedQueryStrings");

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

adminManager.CommitChanges()