Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Vue d’ensemble
L’élément <hiddenSegments> contient une collection d’éléments <add> qui identifient les URL qu’IIS 7 rendra inaccessibles aux clients.
Par exemple, sur les serveurs web qui hébergent du contenu ASP.NET, IIS 7 bloque automatiquement plusieurs chemins ASP.NET, comme Web.config, bin, App_Code, etc. Le blocage de ces segments d’URL réduit le risque qu’un attaquant puisse exploiter ces URL pour obtenir des informations.
Remarque
Quand le filtrage des demandes bloque une requête HTTP en raison d’un segment d’URL masqué, IIS 7 renvoie une erreur HTTP 404 au client et journalise l’état HTTP suivant avec un sous-code d’état unique qui identifie le motif du refus de la requête :
| Sous-code d’état HTTP | Description |
|---|---|
404.8 |
Espace de noms masqué |
Ce sous-code d’état permet aux administrateurs web d’analyser leurs journaux IIS et d’identifier les menaces potentielles.
Compatibilité
| Version | Notes |
|---|---|
| IIS 10.0 | L’élément <hiddenSegments> n’a fait l’objet d’aucune modification dans IIS 10.0. |
| IIS 8.5 | L’élément <hiddenSegments> n’a fait l’objet d’aucune modification dans IIS 8.5. |
| IIS 8.0 | L’élément <hiddenSegments> n’a fait l’objet d’aucune modification dans IIS 8.0. |
| IIS 7.5 | L’élément <hiddenSegments> n’a fait l’objet d’aucune modification dans IIS 7.5. |
| IIS 7.0 | L’élément <hiddenSegments> de la collection <requestFiltering> a été introduit dans IIS 7.0. |
| IIS 6.0 | L’élément <hiddenSegments> remplace les fonctionnalités [DenyUrlSequences] 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
- Dans la barre des tâches, cliquez sur Gestionnaire de serveur.
- Dans le Gestionnaire de serveur, cliquez sur le menu Gérer, puis cliquez sur Ajouter des rôles et des fonctionnalités.
- 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.
- 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.
. - Dans la page Sélectionner les composants, cliquez sur Suivant.
- Dans la page Confirmer les sélections d’installation, cliquez sur Installer.
- Dans la page Résultats , cliquez sur Fermer.
Windows 8 ou Windows 8.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.
- Dans le Panneau de configuration, cliquez sur Programmes et fonctionnalités, puis cliquez sur Activer ou désactiver des fonctionnalités Windows.
- Développez tour à tour Internet Information Services, Services World Wide Web et Sécurité, puis sélectionnez Filtrage des demandes.

- Cliquez sur OK.
- Cliquez sur Fermer.
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 de serveur.
- Dans le volet de la hiérarchie du Gestionnaire de serveur, développez Rôles, puis cliquez sur Serveur web (IIS).
- 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.
- 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.

- Dans la page Confirmer les sélections pour l'installation, cliquez sur Installer.
- Dans la page Résultats , cliquez sur Fermer.
Windows Vista ou Windows 7
- Dans la barre des tâches, cliquez sur Démarrer, puis cliquez sur Panneau de configuration.
- Dans le Panneau de configuration, cliquez sur Programmes et fonctionnalités, puis cliquez sur Activer ou désactiver des fonctionnalités Windows.
- Développez tour à tour Internet Information Services, Services World Wide Web et Sécurité.
- Sélectionnez Filtrage des demandes, puis cliquez sur OK.

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 :
Ajouter un segment masqué
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).
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.
Dans le volet Accueil, double-cliquez sur Filtrage des demandes.

Dans le volet Filtrage des demandes, cliquez sur l’onglet Segments masqués, puis cliquez sur Ajouter un segment masqué... dans le volet Actions.

Dans la boîte de dialogue Ajouter un segment masqué, entrez le chemin relatif à masquer, puis cliquez sur OK.

Configuration
Attributs
| Attribut | Description |
|---|---|
applyToWebDAV |
Attribut booléen facultatif. Spécifie si ces paramètres doivent également s’appliquer aux demandes de WebDAV. |
Éléments enfants
| Élément | Description |
|---|---|
add |
Élément facultatif. Ajoute un segment à la collection des segments masqués. |
clear |
Élément facultatif. Supprime toutes les références aux segments dans la collection <hiddenSegments>. |
remove |
Élément facultatif. Supprime une référence à un segment dans la collection <hiddenSegments>. |
Exemple Configuration
L’exemple de fichier Web.config suivant configure deux options : il configure IIS pour refuser les demandes d’accès au dossier « _private », et il configure le filtrage des demandes pour autoriser l’accès de WebDAV aux segments masqués.
<configuration>
<system.webServer>
<security>
<requestFiltering>
<hiddenSegments applyToWebDAV="false">
<add segment="_private" />
</hiddenSegments>
</requestFiltering>
</security>
</system.webServer>
</configuration>
Exemple de code
Les exemples de code suivants configurent deux options : ils configurent IIS pour refuser les demandes d’accès au dossier « _private » sur le site web par défaut, et ils configurent le filtrage des demandes pour autoriser l’accès de WebDAV aux segments masqués.
AppCmd.exe
appcmd.exe set config "Default Web Site" -section:system.webServer/security/requestFiltering /hiddenSegments.applyToWebDAV:"False"
appcmd.exe set config "Default Web Site" -section:system.webServer/security/requestFiltering /+"hiddenSegments.[segment='_private']"
PowerShell
$hiddenSegments = Get-IISConfigSection -CommitPath 'Default Web Site' -SectionPath 'system.webServer/security/requestFiltering' | Get-IISConfigElement -ChildElementName 'hiddenSegments'
Set-IISConfigAttributeValue -ConfigElement $hiddenSegments -AttributeName 'applyToWebDAV' -AttributeValue $false
$hiddenSegments = Get-IISConfigSection -CommitPath 'Default Web Site' -SectionPath 'system.webServer/security/requestFiltering' | Get-IISConfigCollection -CollectionName 'hiddenSegments'
New-IISConfigCollectionElement -ConfigCollection $hiddenSegments -ConfigAttribute @{ 'segment' = '_private' }
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 hiddenSegmentsElement = requestFilteringSection.GetChildElement("hiddenSegments");
hiddenSegmentsElement["applyToWebDAV"] = false;
ConfigurationElementCollection hiddenSegmentsCollection = hiddenSegmentsElement.GetCollection();
ConfigurationElement addElement = hiddenSegmentsCollection.CreateElement("add");
addElement["segment"] = @"_private";
hiddenSegmentsCollection.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 hiddenSegmentsElement As ConfigurationElement = requestFilteringSection.GetChildElement("hiddenSegments")
hiddenSegmentsElement("applyToWebDAV") = False
Dim hiddenSegmentsCollection As ConfigurationElementCollection = hiddenSegmentsElement.GetCollection
Dim addElement As ConfigurationElement = hiddenSegmentsCollection.CreateElement("add")
addElement("segment") = "_private"
hiddenSegmentsCollection.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 hiddenSegmentsElement = requestFilteringSection.ChildElements.Item("hiddenSegments");
hiddenSegmentsElement.Properties.Item("applyToWebDAV").Value = false;
var hiddenSegmentsCollection = hiddenSegmentsElement.Collection;
var addElement = hiddenSegmentsCollection.CreateNewElement("add");
addElement.Properties.Item("segment").Value = "_private";
hiddenSegmentsCollection.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 hiddenSegmentsElement = requestFilteringSection.ChildElements.Item("hiddenSegments")
hiddenSegmentsElement.Properties.Item("applyToWebDAV").Value = False
Set hiddenSegmentsCollection = hiddenSegmentsElement.Collection
Set addElement = hiddenSegmentsCollection.CreateNewElement("add")
addElement.Properties.Item("segment").Value = "_private"
hiddenSegmentsCollection.AddElement(addElement)
adminManager.CommitChanges()