Protection des informations de connexionProtecting Connection Information

La protection de l'accès à votre source de données représente l'un de vos principaux objectifs lorsque vous sécurisez une application.Protecting access to your data source is one of the most important goals when securing an application. Une chaîne de connexion présente une vulnérabilité potentielle si elle n'est pas sécurisée.A connection string presents a potential vulnerability if it is not secured. Le stockage d'informations de connexion au format texte brut ou sa conservation dans la mémoire risque de compromettre l'ensemble de votre système.Storing connection information in plain text or persisting it in memory risks compromising your entire system. Chaînes de connexion incorporées dans votre code source peuvent être lu à l’aide de la Ildasm.exe (désassembleur IL) pour afficher le langage intermédiaire Microsoft (MSIL) dans un assembly compilé.Connection strings embedded in your source code can be read using the Ildasm.exe (IL Disassembler) to view Microsoft intermediate language (MSIL) in a compiled assembly.

Des vulnérabilités de sécurité impliquant des chaînes de connexion peuvent se produire en fonction du type d'authentification utilisé, de la manière dont les chaînes de connexion sont conservées dans la mémoire et sur le disque, et des techniques utilisées pour les construire au moment de l'exécution.Security vulnerabilities involving connection strings can arise based on the type of authentication used, how connection strings are persisted in memory and on disk, and the techniques used to construct them at run time.

Utiliser l'authentification WindowsUse Windows Authentication

Pour aider à limiter l'accès à votre source de données, vous devez sécuriser des informations de connexion telles que l'ID utilisateur, le mot de passe et le nom de source de données.To help limit access to your data source, you must secure connection information such as user ID, password, and data source name. Afin d’éviter l’exposition d’informations utilisateur, nous recommandons d’utiliser l’authentification Windows (parfois appelé sécurité intégrée) autant que possible.In order to avoid exposing user information, we recommend using Windows authentication (sometimes referred to as integrated security) wherever possible. L'authentification Windows est spécifiée dans une chaîne de connexion à l'aide des mots clés Integrated Security ou Trusted_Connection, ce qui supprime le recours à un ID utilisateur et à un mot de passe.Windows authentication is specified in a connection string by using the Integrated Security or Trusted_Connection keywords, eliminating the need to use a user ID and password. Lors de l'utilisation de l'authentification Windows, les utilisateurs sont authentifiés par Windows et l'accès aux ressources de serveur et de base de données est déterminé en octroyant des autorisations aux utilisateurs et aux groupes Windows.When using Windows authentication, users are authenticated by Windows, and access to server and database resources is determined by granting permissions to Windows users and groups.

Dans les cas où l'utilisation de l'authentification Windows n'est pas possible, vous devez être extrêmement prudent, car les informations d'authentification utilisateur sont exposées dans la chaîne de connexion.For situations where it is not possible to use Windows authentication, you must use extra care because user credentials are exposed in the connection string. Dans une application ASP.NET, vous pouvez configurer un compte Windows en tant qu'identité fixe utilisée pour la connexion à des bases de données et autres ressources réseau.In an ASP.NET application, you can configure a Windows account as a fixed identity that is used to connect to databases and other network resources. Vous activez l’emprunt d’identité dans l’élément d’identité dans le web.config fichier et spécifiez un nom d’utilisateur et le mot de passe.You enable impersonation in the identity element in the web.config file and specify a user name and password.

<identity impersonate="true"   
        userName="MyDomain\UserAccount"   
        password="*****" />  

Le compte d'identité fixe doit être un compte avec des privilèges faibles auquel seules les autorisations nécessaires dans la base de données ont été octroyées.The fixed identity account should be a low-privilege account that has been granted only necessary permissions in the database. En outre, vous devez chiffrer le fichier de configuration afin que le nom d'utilisateur et le mot de passe ne soient pas exposés en texte clair.In addition, you should encrypt the configuration file so that the user name and password are not exposed in clear text.

Évitez de stocker des chaînes de connexion pour OleDbConnection dans un fichier UDL (Universal Data Link).Avoid storing connection strings for an OleDbConnection in a Universal Data Link (UDL) file. Les fichiers UDL sont stockés en texte clair et ne peuvent pas être chiffrés.UDLs are stored in clear text and cannot be encrypted. Un fichier UDL est une ressource basée sur un fichier externe pour votre application et il ne peut pas être sécurisé ou chiffré à l'aide du .NET Framework.A UDL file is an external file-based resource to your application, and it cannot be secured or encrypted using the .NET Framework.

Évitez les attaques par injection à l'aide de générateurs de chaînes de connexionAvoid Injection Attacks with Connection String Builders

Une attaque par injection de chaîne de connexion peut se produire lorsqu'une concaténation de chaîne dynamique est utilisée pour générer des chaînes de connexion en fonction de l'entrée utilisateur.A connection string injection attack can occur when dynamic string concatenation is used to build connection strings based on user input. Si l'entrée utilisateur n'est pas validée et que du texte ou des caractères malveillants ne sont pas placés dans une séquence d'échappement, un attaquant peut éventuellement accéder à des données sensibles ou à d'autres ressources sur le serveur.If the user input is not validated and malicious text or characters not escaped, an attacker can potentially access sensitive data or other resources on the server. Pour résoudre ce problème, ADO.NET 2.0 a introduit de nouvelles classes de générateur de chaîne de connexion pour valider la syntaxe de chaîne de connexion et garantir que des paramètres supplémentaires ne sont pas introduits.To address this problem, ADO.NET 2.0 introduced new connection string builder classes to validate connection string syntax and ensure that additional parameters are not introduced. Pour plus d’informations, consultez Builders de chaînes de connexion.For more information, see Connection String Builders.

Utilisez Persist Security Info=FalseUse Persist Security Info=False

La valeur par défaut pour Persist Security Info est False ; nous vous recommandons d'utiliser cette valeur par défaut dans toutes les chaînes de connexion.The default value for Persist Security Info is false; we recommend using this default in all connection strings. Le paramétrage de Persist Security Info avec la valeur true ou yes permet d'obtenir des informations sensibles pour la sécurité, dont l'ID utilisateur et le mot de passe, à partir d'une connexion une fois celle-ci ouverte.Setting Persist Security Info to true or yes allows security-sensitive information, including the user ID and password, to be obtained from a connection after it has been opened. Lorsque Persist Security Info possède la valeur false ou no, les informations de sécurité sont ignorées après leur utilisation pour ouvrir la connexion, ce qui garantit qu'une source qui n'est pas digne de confiance ne dispose pas d'un accès à des informations sensibles sur la sécurité.When Persist Security Info is set to false or no, security information is discarded after it is used to open the connection, ensuring that an untrusted source does not have access to security-sensitive information.

Chiffrez les fichiers de configurationEncrypt Configuration Files

Vous pouvez également stocker des chaînes de connexion dans des fichiers de configuration, ce qui évite d'avoir à les incorporer dans le code de votre application.You can also store connection strings in configuration files, which eliminates the need to embed them in your application's code. Les fichiers de configuration sont des fichiers XML standard pour lesquels le .NET Framework a défini un ensemble commun d'éléments.Configuration files are standard XML files for which the .NET Framework has defined a common set of elements. Chaînes de connexion dans les fichiers de configuration sont généralement stockées à l’intérieur de la <connectionStrings > élément dans le app.config pour une application Windows, ou le Web.config fichier pour une application ASP.NET.Connection strings in configuration files are typically stored inside the <connectionStrings> element in the app.config for a Windows application, or the web.config file for an ASP.NET application. Pour plus d’informations sur les principes de base du stockage, la récupération et chiffrement des chaînes de connexion à partir des fichiers de configuration, consultez chaînes de connexion et les fichiers de Configuration.For more information on the basics of storing, retrieving and encrypting connection strings from configuration files, see Connection Strings and Configuration Files.

Voir aussiSee Also

Sécurisation des applications ADO.NETSecuring ADO.NET Applications
Chiffrement des informations de Configuration à l’aide de la Configuration protégéeEncrypting Configuration Information Using Protected Configuration
Sécurité PAVE dans le code natif et .NET FrameworkPAVE Security in Native and .NET Framework Code
Fournisseurs managés ADO.NET et centre de développement DataSetADO.NET Managed Providers and DataSet Developer Center