Partager via


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

Compte Outil Administration de site Web ASP.NET

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)

Autres ressources

Sécurisation de sites Web ASP.NET