Share via


Extensions de nom de fichier <fileExtensions>

Vue d’ensemble

L’élément <fileExtensions> contient une collection d’éléments <add> qui spécifient les extensions de nom de fichier uniques qui seront autorisées ou refusées par IIS en fonction de la valeur attribuée à l’élément <add>. Avec l’élément <fileExtensions>, vous pouvez préciser les types de contenus que votre serveur rendra accessibles aux clients web.

Par exemple, si vous définissez l’attribut allowUnlisted sur false, toutes les demandes portant sur des fichiers dont les extensions ne figurent pas dans la liste des extensions autorisées seront refusées. En utilisant l’élément <clear>, vous pouvez effacer de la liste toutes les extensions de nom de fichier ayant déjà été définies, puis vous pouvez spécifier uniquement les extensions de nom de fichier que vous souhaitez autoriser.

Remarque

Quand le filtrage des demandes bloque une requête HTTP en raison d’une extension de nom de fichier refusée, 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.7 Extension de fichier refusée

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 <fileExtensions> n’a fait l’objet d’aucune modification dans IIS 10.0.
IIS 8.5 L’élément <fileExtensions> n’a fait l’objet d’aucune modification dans IIS 8.5.
IIS 8.0 L’élément <fileExtensions> n’a fait l’objet d’aucune modification dans IIS 8.0.
IIS 7.5 L’élément <fileExtensions> n’a fait l’objet d’aucune modification dans IIS 7.5.
IIS 7.0 L’élément <fileExtensions> de la collection <requestFiltering> a été introduit dans IIS 7.0.
IIS 6.0 L’élément <fileExtensions> remplace les fonctionnalités [AllowExtensions] et [DenyExtensions] 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.
    Screenshot of the Request Filtering option being highlighted and 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.
    Screenshot of the Request Filtering folder being highlighted and 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 the Add Role Services Wizard
  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 the Select Roles Services Wizard showing the Request Filtering folder being highlighted and selected.

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 :

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 the Default Web Site Home pane showing the Request Filtering option being highlighted.

  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.
    Screenshot of the Request Filtering pane showing the Deny File Name Extension option.

  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.
    Screenshot of the Deny File Name Extension dialog box, showing the O K option. 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.

Configuration

Attributs

Attribut Description
allowUnlisted Attribut booléen facultatif.

Spécifie si le serveur web doit traiter les fichiers qui ont des extensions de nom de fichier non listées. Si vous définissez cet attribut sur true, vous devez lister toutes les extensions de nom de fichier que vous souhaitez refuser. Si vous définissez cet attribut sur false, vous devez lister toutes les extensions de nom de fichier que vous souhaitez autoriser.

La valeur par défaut est true.
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 une extension de nom de fichier à la collection d’extensions de nom de fichier.
clear Élément facultatif.

Supprime toutes les références aux extensions de nom de fichier dans la collection <fileExtensions>.
remove Élément facultatif.

Supprime une référence à une extension de nom de fichier dans la collection <fileExtensions>.

Exemple Configuration

L’exemple de fichier Web.config suivant configure deux options. Il configure le filtrage des demandes pour autoriser l’accès de WebDAV à toutes les extensions de nom de fichier. Il configure aussi IIS pour refuser l’accès aux fichiers ayant l’extension de nom de fichier .inc, lesquels sont parfois utilisés comme fichiers include pour les applications.

<configuration>
   <system.webServer>
      <security>
         <requestFiltering>
            <fileExtensions applyToWebDAV="false">
               <add fileExtension=".inc" allowed="false" />
            </fileExtensions>
         </requestFiltering>
      </security>
   </system.webServer>
</configuration>

Exemple de code

Les exemples de code suivants ajoutent une entrée à la liste des extensions de nom de fichier pour le site web par défaut qui refuse l’accès à tous les fichiers ayant l’extension .inc, lesquels sont parfois utilisés comme fichiers include pour les applications. De plus, ils configurent le filtrage des demandes pour autoriser l’accès de WebDAV aux segments masqués.

Remarque

Si vous souhaitez reprendre les mêmes exemples pour autoriser l’accès, définissez l’attribut allowed sur true au lieu de false dans chacun de ces exemples.

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/security/requestFiltering /fileExtensions.applyToWebDAV:"False"

appcmd.exe set config "Default Web Site" -section:system.webServer/security/requestFiltering /+"fileExtensions.[fileExtension='.inc',allowed='False']"

PowerShell

Start-IISCommitDelay

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

New-IISConfigCollectionElement -ConfigCollection $fileExtensions -ConfigAttribute @{ 'fileExtension' = '.inc'; 'allowed' = $false } -AddAt 0

Set-IISConfigAttributeValue -ConfigElement $fileExtensions -AttributeName 'applyToWebDAV' -AttributeValue $false

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

         ConfigurationElement fileExtensionsElement = requestFilteringSection.GetChildElement("fileExtensions");
         fileExtensionsElement["applyToWebDAV"] = false;
         ConfigurationElementCollection fileExtensionsCollection = fileExtensionsElement.GetCollection();

         ConfigurationElement addElement = fileExtensionsCollection.CreateElement("add");
         addElement["fileExtension"] = @"inc";
         addElement["allowed"] = false;
         fileExtensionsCollection.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 fileExtensionsElement As ConfigurationElement = requestFilteringSection.GetChildElement("fileExtensions")
      fileExtensionsElement("applyToWebDAV") = False
      Dim fileExtensionsCollection As ConfigurationElementCollection = fileExtensionsElement.GetCollection

      Dim addElement As ConfigurationElement = fileExtensionsCollection.CreateElement("add")
      addElement("fileExtension") = "inc"
      addElement("allowed") = False
      fileExtensionsCollection.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 fileExtensionsElement = requestFilteringSection.ChildElements.Item("fileExtensions");
fileExtensionsElement.Properties.Item("applyToWebDAV").Value = false;
var fileExtensionsCollection = fileExtensionsElement.Collection;

var addElement = fileExtensionsCollection.CreateNewElement("add");
addElement.Properties.Item("fileExtension").Value = "inc";
addElement.Properties.Item("allowed").Value = false;
fileExtensionsCollection.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 fileExtensionsElement = requestFilteringSection.ChildElements.Item("fileExtensions")
fileExtensionsElement.Properties.Item("applyToWebDAV").Value = False
Set fileExtensionsCollection = fileExtensionsElement.Collection

Set addElement = fileExtensionsCollection.CreateNewElement("add")
addElement.Properties.Item("fileExtension").Value = "inc"
addElement.Properties.Item("allowed").Value = False
fileExtensionsCollection.AddElement(addElement)

adminManager.CommitChanges()