Partager via


Restrictions ISAPI/CGI <isapiCgiRestriction>

Vue d’ensemble

L’élément <isapiCgiRestriction> de l’élément <security> vous permet de spécifier une liste d’applications CGI (Common Gateway Interface) et ISAPI (Internet Server Application Programming Interface) qui peuvent s’exécuter sur Internet Information Services (IIS) 7. L’utilisation de cet élément empêche les utilisateurs malveillants potentiels de copier des fichiers binaires CGI et ISAPI non autorisés sur votre serveur Web, et ensuite de les exécuter.

Vous devez utiliser cet élément pour configurer votre serveur web uniquement quand un site ou une application utilise un pool d’applications qui s’exécute en mode classique. Les restrictions que vous configurez dans l’élément <isapiCgiRestriction> s’appliquent uniquement au code ISAPI et CGI.

L’élément <isapiCgiRestriction> contient une collection d’éléments <add>. Chaque élément <add> définit un binaire distinct qui ne peut pas s’exécuter sur un serveur IIS 7 en mode classique.

Par exemple, si vous avez créé une application ASP.NET 2.0 et l’avez configurée pour utiliser un pool d’applications qui s’exécute en mode classique, toutes les demandes pour l’application ASP.NET doivent passer par aspnet_isapi.dll pour pouvoir être traitées. Pour garantir l’exécution des demandes ASP.NET par IIS, IIS remplit l’élément <isapiCgiRestriction> avec un élément <add> qui contient un attribut allowed dont la valeur est définie sur true.

Si vous avez changé l’attribut allowed sur false et conservé le pool d’applications en mode classique, les demandes ASP.NET échouent. En revanche, si vous avez changé le pool d’applications en mode intégré, IIS traite les demandes ASP.NET en se servant du pipeline de demande intégré, qui ignore la restriction ISAPI et CGI que vous avez configurée.

L’élément <isapiCgiRestriction> fonctionne en tandem avec l’élément <applicationDependencies> pour définir les applications qui ont des dépendances sur une ou plusieurs restrictions CGI ou ISAPI.

Compatibilité

Version Notes
IIS 10.0 L’élément <isapiCgiRestriction> n’a fait l’objet d’aucune modification dans IIS 10.0.
IIS 8.5 L’élément <isapiCgiRestriction> n’a fait l’objet d’aucune modification dans IIS 8.5.
IIS 8.0 L’élément <isapiCgiRestriction> n’a fait l’objet d’aucune modification dans IIS 8.0.
IIS 7.5 L’élément <isapiCgiRestriction> n’a fait l’objet d’aucune modification dans IIS 7.5.
IIS 7.0 L’élément <isapiCgiRestriction> a été introduit dans IIS 7.0.
IIS 6.0 La collection <isapiCgiRestriction> remplace la propriété WebSvcExtRestrictionList de l’objet de métabase IIsWebService d’IIS 6.0.

Programme d’installation

La collection <isapiCgiRestriction> est disponible uniquement si vous avez installé les modules CGI ou Extensions ISAPI sur votre serveur IIS 7 ou ultérieur. Vous ne pouvez pas l’installer indépendamment de ces fonctionnalités.

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 Développement d’applications, puis sélectionnez CGI ou Extensions ISAPI. Sélectionnez Suivant.
    Screenshot of the Add Roles and Features wizard. I S A P I Extensions option is highlighted in the menu. .
  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 Fonctionnalités de développement d’applications, puis sélectionnez CGI ou Extensions ISAPI.
    Screenshot of the Windows Features dialog box. The I S A P I Extensions feature is 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 CGI ou Extensions ISAPI.
    Screenshot of the Add Role Services displaying the Role Services page. The I S A P I Extensions feature is highlighted.
  5. Si la boîte de dialogue Ajouter des services de rôle s’affiche, cliquez sur Ajouter les services de rôle requis. (Cette page s’affiche uniquement si vous n’avez pas déjà installé les services de rôle requis sur votre serveur.)
  6. Dans la page Sélectionner des services de rôle, cliquez sur Suivant.
  7. Dans la page Confirmer les sélections pour l'installation, cliquez sur Installer.
  8. 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. Dans la boîte de dialogue Fonctionnalités Windows, développez tour à tour Internet Information Services, Services World Wide Web et Fonctionnalités de développement d’applications.
  4. Sélectionnez CGI ou Extensions ISAPI, puis cliquez sur OK.
    Screenshot of the Windows Features dialog with the I S A P I Extensions feature highlighted.

Procédure

Ajouter une restriction ISAPI ou CGI

  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, cliquez sur le nom du serveur.

  3. Dans le volet Accueil, double-cliquez sur Restrictions ISAPI et CGI.
    Screenshot of the I I S Manager window displaying the Server Home page. The icon for I S A P I and C G I Restrictions is highlighted.

  4. Dans le volet Actions, cliquez sur Ajouter...

  5. Dans la boîte de dialogue Ajouter une restriction ISAPI ou CGI, entrez le chemin du binaire que vous souhaitez ajouter dans le champ Chemin ISAPI ou CGI, entrez la description du binaire dans le champ Description, cochez la case Autoriser l’exécution du chemin de l’extension pour autoriser l’exécution du binaire sur le serveur, puis cliquez sur OK.
    Screenshot of the Add I S A P I or C G I Restriction dialog box.

Configuration

La collection <isapiCgiRestriction> peut uniquement être configurée au niveau du serveur dans le fichier ApplicationHost.config.

Attributs

Attribut Description
notListedIsapisAllowed Attribut booléen facultatif.

Spécifie si les modules ISAPI non listés sont autorisés à s’exécuter sur ce serveur.

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

Spécifie si les programmes CGI non listés sont autorisés à s’exécuter sur ce serveur.

La valeur par défaut est false.

Éléments enfants

Élément Description
add Élément facultatif.

Ajoute une restriction à la collection des restrictions ISAPI et CGI.
remove Élément facultatif.

Supprime une référence à une restriction dans la collection isapiCgiRestriction.
clear Élément facultatif.

Supprime toutes les références aux restrictions dans la collection isapiCgiRestriction.

Exemple Configuration

L’exemple de configuration suivant configure l’élément <isapiCgiRestriction> pour IIS 7.0 après l’installation d’ASP et d’ASP.NET version 2.0.

<security>
   <isapiCgiRestriction>
      <add allowed="true" groupId="ASP"
         path="%windir%\system32\inetsrv\asp.dll"
         description="Active Server Pages" />
      <add allowed="true" groupId="ASP.NET v2.0.50727"
         path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll"
         description="ASP.NET v2.0.50727" />
   </isapiCgiRestriction>
</security>

Exemple de code

Les exemples suivants ajoutent une restriction ISAPI/CGI pour une extension ISAPI personnalisée qui est située dans le dossier content pour un site web à l’emplacement C:\Inetpub\www.contoso.com\wwwroot. Les exemples spécifient le nom, le chemin et le groupe de l’extension ISAPI, et activent l’extension.

AppCmd.exe

appcmd.exe set config -section:system.webServer/security/isapiCgiRestriction /+"[path='C:\Inetpub\www.contoso.com\wwwroot\isapi\custom.dll',allowed='True',groupId='ContosoGroup',description='Contoso Extension']" /commit:apphost

Remarque

Veillez à définir le paramètre commit sur apphost quand vous utilisez AppCmd.exe pour configurer ces paramètres. Cela valide les paramètres de configuration dans la section location appropriée dans le fichier ApplicationHost.config.

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.GetApplicationHostConfiguration();
         ConfigurationSection isapiCgiRestrictionSection = config.GetSection("system.webServer/security/isapiCgiRestriction");
         ConfigurationElementCollection isapiCgiRestrictionCollection = isapiCgiRestrictionSection.GetCollection();

         ConfigurationElement addElement = isapiCgiRestrictionCollection.CreateElement("add");
         addElement["path"] = @"C:\Inetpub\www.contoso.com\wwwroot\isapi\custom.dll";
         addElement["allowed"] = true;
         addElement["groupId"] = @"ContosoGroup";
         addElement["description"] = @"Contoso Extension";
         isapiCgiRestrictionCollection.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.GetApplicationHostConfiguration
      Dim isapiCgiRestrictionSection As ConfigurationSection = config.GetSection("system.webServer/security/isapiCgiRestriction")
      Dim isapiCgiRestrictionCollection As ConfigurationElementCollection = isapiCgiRestrictionSection.GetCollection

      Dim addElement As ConfigurationElement = isapiCgiRestrictionCollection.CreateElement("add")
      addElement("path") = "C:\Inetpub\www.contoso.com\wwwroot\isapi\custom.dll"
      addElement("allowed") = True
      addElement("groupId") = "ContosoGroup"
      addElement("description") = "Contoso Extension"
      isapiCgiRestrictionCollection.Add(addElement)

      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var isapiCgiRestrictionSection = adminManager.GetAdminSection("system.webServer/security/isapiCgiRestriction", "MACHINE/WEBROOT/APPHOST");
var isapiCgiRestrictionCollection = isapiCgiRestrictionSection.Collection;

var addElement = isapiCgiRestrictionCollection.CreateNewElement("add");
addElement.Properties.Item("path").Value = "C:\\Inetpub\\www.contoso.com\\wwwroot\\isapi\\custom.dll";
addElement.Properties.Item("allowed").Value = true;
addElement.Properties.Item("groupId").Value = "ContosoGroup";
addElement.Properties.Item("description").Value = "Contoso Extension";
isapiCgiRestrictionCollection.AddElement(addElement);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set isapiCgiRestrictionSection = adminManager.GetAdminSection("system.webServer/security/isapiCgiRestriction", "MACHINE/WEBROOT/APPHOST")
Set isapiCgiRestrictionCollection = isapiCgiRestrictionSection.Collection

Set addElement = isapiCgiRestrictionCollection.CreateNewElement("add")
addElement.Properties.Item("path").Value = "C:\Inetpub\www.contoso.com\wwwroot\isapi\custom.dll"
addElement.Properties.Item("allowed").Value = True
addElement.Properties.Item("groupId").Value = "ContosoGroup"
addElement.Properties.Item("description").Value = "Contoso Extension"
isapiCgiRestrictionCollection.AddElement(addElement)

adminManager.CommitChanges()