Partager via


Sécurisation des propriétés de profil

Mise à jour : novembre 2007

Vous pouvez utiliser la fonctionnalité de profil ASP.NET pour stocker et récupérer des paramètres utilisateurs dans une source de données telle qu'une base de données. Vous devez spécifier les propriétés et les groupes qui composent les profils utilisateur dans le fichier de configuration de l'application. Au moment de l'exécution, ASP.NET utilise les informations de configuration pour générer dynamiquement une classe avec des accesseurs fortement typés pour chaque propriété de profil. Cette classe est ensuite exposée à l'aide de la propriété statique Profile. Les valeurs des propriétés de profil sont stockées par un fournisseur de profils dans une source de données, soit en texte clair XML, soit dans un formulaire binaire sérialisé.

Vous pouvez améliorer la sécurité de votre application en suivant les méthodes de programmation et de configuration conseillées. Il est également important que votre serveur d'application Web soit constamment actualisé à l'aide des mises à jour de sécurité les plus récentes pour Microsoft Windows et pour les Services Internet (IIS) de Microsoft, ainsi qu'avec toutes les mises à jour de Microsoft SQL Server ou d'autres sources de données de profil.

Pour plus d'informations sur les méthodes conseillées relatives à l'écriture d'un code sécurisé et à la sécurisation des applications, consultez le manuel Writing Secure Code, de Michael Howard et David LeBlanc, et suivez les suggestions figurant dans Microsoft Patterns and Practices (https://www.microsoft.com/resources/practices/default.mspx).

Configuration de profil sécurisée

La fonction de profil ASP.NET est activée par défaut. Bien que les paramètres de configuration par défaut se voient affecter les valeurs les plus sûres, nous vous conseillons de désactiver la fonction de profil utilisateur si elle n'est pas nécessaire à votre application. Pour plus d'informations sur les paramètres de configuration de profil et leurs valeurs par défaut, consultez profile, élément (Schéma des paramètres ASP.NET). L'identification anonyme, qui peut être définie pour les propriétés de profil, est désactivée par défaut. Pour plus d'informations sur les paramètres de configuration de l'identification anonyme et leurs valeurs par défaut, consultez anonymousIdentification, élément (Schéma des paramètres ASP.NET).

Sécurisation de valeurs de configuration

Lorsque vous stockez des informations sensibles dans un fichier de configuration, nous vous conseillons de chiffrer les valeurs sensibles à l'aide de la configuration protégée. Les informations qui sont particulièrement sensibles incluent les clés de chiffrement stockées dans l'élément de configuration machineKey et les chaînes de connexion à une source de données stockées dans l'élément de configuration connectionStrings. Pour plus d'informations, consultez Chiffrement des informations de configuration à l'aide de la configuration protégée.

Sécurisation des connexions à une source de données de profils

Chaînes de connexion

Comme nous l'avons vu, il est important de protéger les informations sensibles stockées dans une chaîne de connexion utilisée pour communiquer avec un ordinateur qui exécute SQL Server ou toute autre source de données. Pour sécuriser la connexion à votre base de données, nous vous conseillons de chiffrer les informations de chaîne de connexion dans la configuration à l'aide de la configuration protégée. Pour plus d'informations, consultez Chiffrement des informations de configuration à l'aide de la configuration protégée.

Connexion à SQL Server à l'aide de la sécurité intégrée

Nous vous conseillons d'utiliser la sécurité intégrée pour vous connecter aux ordinateurs qui exécutent SQL Server, afin d'éviter de compromettre votre chaîne de connexion et d'exposer les ID utilisateurs et les informations concernant le mot de passe. Lorsque vous spécifiez une connexion qui utilise la sécurité intégrée pour vous connecter à un ordinateur qui exécute SQL Server, le fournisseur de profils rétablit l'identité du processus. Nous vous conseillons de vérifier que l'identité du processus exécutant ASP.NET (par exemple, le pool d'application) représente le compte de processus par défaut ou un compte d'utilisateur limité. Pour plus d'informations, consultez Emprunt d'identité ASP.NET.

Autorisations de bases de données SQL Server

La base de données SQL Server utilisée par défaut pour stocker des informations de profil comprend des rôles et des vues de base de données qui vous permettent de restreindre l'accès des utilisateurs aux seuls privilèges requis pour votre application. Nous vous conseillons d'assigner le minimum de privilèges nécessaires à l'ID d'utilisateur qui se connecte à la base de données de profils SQL Server. Pour plus d'informations, consultez Rôles et vues dans la base de données des services d'application pour SQL Server.

Protection des données sensibles dans le profil de source de données

Le fournisseur de profils utilisateur par défaut ne chiffre pas les valeurs stockées dans la source de données de profil. Nous vous conseillons de chiffrer les informations sensibles avant de les stocker dans la source de données de profil, afin d'éviter de les exposer si la source de données est compromise. Vous pouvez chiffrer les données sensibles avant de stocker la valeur dans la propriété de profil, ou étendre les classes ProfileBase ou ProfileProvider pour fournir des fonctions de chiffrement.

Empêcher le partage entre les applications des données de profil anonyme

Si l'identification anonyme est activée pour une application et pour les propriétés de profil utilisées par cette application, les valeurs des propriétés de profil anonymes risquent de se trouver exposées à une autre application. Cela peut se produire lorsque l'attribut cookiePath de l'identification anonyme a la valeur un chemin d'accès comprenant plusieurs applications et lorsque plusieurs applications existent dans un domaine commun.

Lorsque vous utilisez l'identification anonyme avec les profils utilisateur avec l'intention de séparer les utilisateurs anonymes dans les applications, nous vous conseillons de spécifier des clés de chiffrement distinctes dans l'élément machineKey pour chaque application, d'affecter la portée du cookie d'identification anonyme à une application spécifique et d'affecter à la propriété ApplicationName une valeur différente pour chaque application.

Sécurisation des pages Web utilisant des profils

Les pages d'application qui utilisent des données sensibles stockées dans des propriétés de profils doivent être sécurisées à l'aide de mécanismes de sécurité Web standard. Cela passe notamment par l'utilisation du protocole SSL (SSL, Secure Socket Layer) et par la nécessité pour les utilisateurs d'ouvrir une session pour exécuter des opérations sensibles comme la mise à jour d'informations utilisateur ou la suppression d'utilisateurs. En outre, évitez de stocker des données sensibles dans des cookies.

Sécurisation contre les attaques par déni de service

Les méthodes de classe ProfileManager qui exécutent des mises à jour ou de longues opérations de recherche peuvent réduire la réactivité de votre source de données de profils si elles sont appelées en même temps par un grand nombre de clients. Pour réduire l'exposition de votre application à une attaque par déni de service, n'autorisez que les utilisateurs administrateurs à accéder aux pages ASP.NET qui exécutent des mises à jour de base de données ou des recherches associées aux profils.

Messages d'erreur et événements

Exceptions

Pour empêcher que des informations sensibles ne soient exposées, configurez votre application de façon à ce qu'elle n'affiche pas de messages d'erreur détaillés, ou qu'elle n'en affiche que lorsque le client est le serveur Web lui-même. Pour plus d'informations, consultez l'élément de configuration customErrors.

Journal des événements

La fonctionnalité de profil ASP.NET enregistre des informations sur certaines conditions d'erreur à l'aide du contrôle d'état ASP.NET, qui stocke par défaut les informations dans le journal des événements. Si votre ordinateur serveur exécute Windows Server 2003, vous pouvez renforcer la sécurité de votre application en sécurisant le journal des événements, puis en définissant les paramètres relatifs, entre autres, à la taille ou à la durée de conservation du journal des événements afin d'empêcher que ce dernier soit la cible d'une attaque par déni de service.

Informations de traçage

Votre serveur Web peut être configuré pour assurer le traçage lorsque certaines actions concernant la fonctionnalité de profil se produisent et pour stocker les informations de traçage dans un fichier journal. Les informations sensibles, telles que les noms d'utilisateurs, pouvant être stockées dans le fichier du journal des traces, nous vous conseillons de n'autoriser que les administrateurs à activer le traçage, à configurer l'emplacement du fichier du journal des traces et à accéder à ce fichier.

Fournisseurs de profils personnalisés

Lors de la création d'un fournisseur de profils personnalisé pour l'accès aux bases de données, veillez à suivre les méthodes de sécurité conseillées afin d'empêcher les attaques de type injection SQL. Lorsque vous utilisez un fournisseur de profils personnalisé, assurez-vous que celui-ci applique les méthodes conseillées en termes de sécurité.

Voir aussi

Concepts

Vue d'ensemble des propriétés du profil ASP.NET

Autres ressources

Sécurisation de sites Web ASP.NET