Sécurisation de fichiers de définitions de navigateur
Mise à jour : novembre 2007
Les fichiers de définition de navigateur (fichiers .browser) contiennent des informations sur les fonctions des classes de navigateurs (comme Internet Explorer) et de navigateurs spécifiques (comme Internet Explorer 6.0). Au moment de l'exécution, ASP.NET utilise les informations des fichiers .browser pour déterminer le navigateur à l'origine de la demande, les fonctions du navigateur et le mode de restitution de la balise à ce navigateur. Pour plus d'informations, consultez Schéma du fichier de définition de navigateur (élément browsers).
Pour plus d'informations sur les meilleures pratiques en matière d'écriture de code sécurisé et de sécurisation des applications, consultez le manuel « Writing Secure Code », de Michael Howard et David LeBlanc, et reportez-vous à l'aide fournie par le site Web Microsoft Patterns and Practices.
Remarque : |
---|
Les fichiers de définition de navigateur sont nouveaux dans le .NET Framework version 2.0. Dans les versions précédentes du .NET Framework, l'élément browserCaps servait à définir des définitions de navigateur dans les fichiers de configuration. |
Sécurité des fichiers de définition de navigateur
Toutes les fonctionnalités du navigateur, y compris les classes .NET Framework et les fichiers de définition de navigateur, requièrent une confiance partielle au niveau de l'application et une confiance totale au niveau global. L'assembly de définition du navigateur global est signé avec une clé ordinateur unique avant le positionnement dans le Global Assembly Cache et ne peut pas être falsifié. Les fichiers de définition de navigateur du répertoire %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers sont protégés par des listes de contrôle d'accès (ACL, Access Control List) et requièrent des privilèges d'administrateur pour être modifiés.
Répertoires des fichiers de définition de navigateur
Le répertoire Browser global et le sous-répertoire App_Browsers au niveau de l'application doivent contenir uniquement des fichiers comportant l'extension .browser. Seuls les fichiers .browser sont compilés par les fonctionnalités du navigateur ASP.NET. En outre, ASP.NET empêche les fichiers de ces répertoires d'être servis par le serveur Web et d'être accédés par le code dans d'autres applications.
Listes de contrôle d'accès des fichiers de définition de navigateur
Le tableau suivant répertorie les listes de contrôle d'accès définies par défaut pour les fichiers .browser situés dans le répertoire %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers. Ces listes de contrôle d'accès sont également définies sur le répertoire lui-même, mais elles incluent des autorisations Modifier pour le groupe PROPRIÉTAIRE CRÉATEUR. Le répertoire est en lecture seule.
Compte Windows |
Autorisations |
---|---|
Administrateurs |
Contrôle total |
Compte d'ordinateur ASP.NET (<serveur>\ASPNET) |
Lecture et exécution |
PROPRIÉTAIRE CRÉATEUR |
Contrôle total |
IIS_WPG (<serveur>\IIS_WPG) |
Lecture et exécution |
SERVICE LOCAL |
Lecture et exécution |
SERVICE RÉSEAU |
Lecture et exécution |
Utilisateurs avec pouvoir (<serveur>\Power Users) |
Modifier |
SYSTEM |
Contrôle total |
Utilisateurs (<serveur>\Users) |
Lecture et exécution |
Le tableau suivant répertorie les listes de contrôle d'accès qui doivent être définies pour les fichiers .browser au niveau de l'application dans le sous-répertoire App_Browsers.
Compte Windows |
Autorisations |
---|---|
Administrateurs |
Contrôle total |
IIS_WPG (<serveur>\IIS_WPG) |
Lecture et exécution |
INTERACTIF |
Lecture |
Compte Invité Internet (<serveur>\IUSR_<serveur>) |
Lecture |
RÉSEAU |
Lecture |
SERVICE RÉSEAU |
Lecture |
SYSTEM |
Contrôle total |
Utilisateurs (<serveur>\Users) |
Lecture et exécution |
Spécial |
Ajout de fichiers de définition de navigateur
Évitez de télécharger ou d'installer des fichiers de définition de navigateur sauf si vous avez confiance en leur source. Par exemple, examinez un nouveau fichier de définition de navigateur pour vérifier si les espaces de noms inconnus sont référencés dans l'un des attributs suivants :
Attribut markupTextWriterType de l'élément controlAdapters.
Attribut value de l'élément capability.
Les attributs controlType et adapterType de l'élément adapter.
Pour plus d'informations sur les éléments et les attributs valides, consultez Schéma du fichier de définition de navigateur (élément browsers).
Modification des fichiers de définition de navigateur
Si vous ajoutez de nouveaux fichiers de définition de navigateur au répertoire global ou si vous apportez des modifications aux fichiers de définition de navigateur globaux, ces modifications n'ont aucun effet tant que vous ne recompilez pas manuellement la collection de fonctionnalités du navigateur qui utilise l'outil Aspnet_regbrowsers.exe, disponible dans le dossier %SystemRoot%\Microsoft.NET\Framework\version, ou par programme à l'aide de la classe BrowserCapabilitiesCodeGenerator.
Toutefois, il n'est pas nécessaire de recompiler les modifications apportées aux définitions de navigateur au niveau de l'application. Les modifications apportées à ces définitions sont recompilées et réappliquées de manière dynamique.
Sécurisation des fichiers de définition de navigateur dans un environnement d'hébergement partagé
Dans un environnement d'hébergement partagé, des utilisateurs malveillants peuvent arriver à modifier des paramètres du fichier de définition de navigateur par une modification directe des fichiers de définition de navigateur, par une modification via les API de configuration et via d'autres outils d'administration et de configuration. Pour atténuer cette menace, conservez des listes de contrôle d'accès fortes sur les fichiers de définition de navigateur. Le contenu de répertoires de fichiers de définition de navigateur est compilé et doit, par conséquent, être protégé comme tout autre répertoire de code dans l'application. Si l'administrateur hôte ne permet pas à un utilisateur d'ajouter du code à une application, l'utilisateur ne doit pas être autorisé non plus à ajouter des fichiers de définition de navigateur.
Verrouillage d'un fichier de définition de navigateur
Seules plusieurs tentatives d'enregistrement d'un fichier de définition de navigateur ou d'ouverture d'un handle de fichier peuvent verrouiller un fichier de définition de navigateur. Un utilisateur malveillant peut essayer de verrouiller des fichiers de définition de navigateur dans le répertoire %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers. Le verrouillage d'un fichier de définition de navigateur requiert toutefois une confiance totale qui est désactivée par défaut dans ASP.NET.
Utilisation de l'API de configuration pour la lecture de fichiers arbitraires
Les classes de l'API de configuration de la définition de navigateur ne peuvent pas lire des répertoires qui ne font pas partie du domaine d'application ou des fichiers qui n'ont pas d'extension de nom de fichier .browser.
Mise en cache des fonctionnalités du navigateur
Au moment de l'exécution, les informations du fichier de définition de navigateur sont fusionnées dans une collection de navigateurs connus dans un objet BrowserCapabilitiesFactory. Lorsqu'une demande est faite, ASP.NET identifie le navigateur qui effectue la demande à l'aide de l'en-tête de la demande et compile un objet HttpCapabilitiesBase qui correspond au navigateur qui effectue la demande. L'objet est mis en cache et peut être de nouveau utilisé dans le cadre d'une demande différente effectuée par le même navigateur.
Une personne malveillante peut essayer de submerger votre serveur Web de demandes où chaque nouvelle demande utilise un en-tête différent, obligeant ASP.NET à générer et à mettre en cache des objets des fonctionnalités du navigateur pour chaque demande, pouvant entraîner une attaque par déni de service. Pour atténuer cette menace, configurez l'attribut userAgentCacheKeyLength de l'élément browserCaps, élément (Schéma des paramètres ASP.NET) dans le fichier Machine.config ou un fichier Web.config. Cet élément définit la longueur de caractère à utiliser comme clé pour identifier des objets des fonctionnalités mis en cache dans le cache interne. La valeur par défaut est 64. Vous pouvez réduire cette valeur pour augmenter la probabilité de trouver un navigateur correspondant dans le cache, en réduisant la charge du cache.
Exceptions
Pour empêcher que des informations sensibles ne soient exposées à des sources non autorisées, configurez votre application soit pour ne pas afficher de messages d'erreur détaillés, soit pour afficher des messages d'erreur détaillés uniquement lorsque le client est le serveur Web lui-même. Pour plus d'informations, consultez customErrors, élément (Schéma des paramètres ASP.NET).
Journal des événements
Si votre serveur exécute Windows Server 2003, vous pouvez améliorer la sécurité de votre application en sécurisant le journal des événements et en définissant des paramètres concernant sa taille, sa conservation, et d'autres fonctionnalités pour éviter toute attaque par déni de service indirecte. Pour plus d'informations sur la configuration des journaux d'événements, recherchez « Observateur d'événements » dans la fenêtre Aide et support de Windows.
Voir aussi
Tâches
Comment : détecter les types de navigateurs dans les pages Web ASP.NET
Concepts
Fonctionnalités des contrôles serveur Web ASP.NET et du navigateur
Sécurisation de fichiers de définitions de navigateur
Scénarios de configuration ASP.NET
Vue d'ensemble des filtres de périphérique ASP.NET
Vue d'ensemble de l'architecture du comportement des contrôles adaptables
Vue d'ensemble du développement d'applications Web mobiles ASP.NET
Sécurisation de la configuration ASP.NET
Référence
Schéma du fichier de définition de navigateur (élément browsers)