Partager via


Sécurisation des connexions ADO.NET

La protection de l'accès à votre source de données doit être l'un de vos principaux objectifs lorsque vous sécurisez votre application. Pour limiter l'accès à votre source de données, il est impératif de garantir la confidentialité de certaines informations de connexion telles que l'ID utilisateur, le mot de passe, le nom de la source de données, etc. Voici quelques indications qui vous permettront de protéger la confidentialité de ces informations critiques.

Éviter de stocker les ID utilisateur et les mots de passe en texte brut

Les ID utilisateur et les mots de passe stockés en texte brut présentent une plus grande vulnérabilité. Ils sont vulnérables s'ils font partie du code source et que la sécurité de celui-ci se trouve compromise. Même si vous fournissez une version compilée de votre code à une source extérieure, elle peut être désassemblée au risque d'exposer l'ID utilisateur et le mot de passe. Il est donc crucial que des informations critiques que sont les ID utilisateur et les mots de passe ne figurent pas sous forme de texte brut dans votre code.

Pour préserver la confidentialité de ces informations, une option consiste à utiliser la cryptographie (consultez Services cryptographiques), mais dans ce cas également vous devez prendre certaines précautions lors du stockage d'informations clés et veiller à stocker les informations confidentielles séparément de l'application, mais étroitement protégées par des autorisations NTFS.

Lors de la connexion à Microsoft SQL Server, vous avez également l'option de recourir à la sécurité intégrée, laquelle utilise l'identité de l'utilisateur actif plutôt que de transmettre un ID utilisateur et un mot de passe. . L'utilisation de la sécurité intégrée est fortement recommandée.

Remarque   Les développeurs ASP.NET doivent faire particulièrement attention lorsqu'ils utilisent la sécurité intégrée. Pour plus d'informations sur le contrôle de l'identité de l'utilisateur actif dans une application ASP.NET, consultez Emprunt d'identité ASP.NET.

Vous pouvez utiliser un fichier UDL (Universal Data Link) pour fournir des informations de connexion destinées à OleDbConnection. Étant donné qu'un fichier UDL est une ressource extérieure à votre application, il doit être protégé par des autorisations NTFS (New Technologies File System) afin d'empêcher que les informations de connexion ne se trouvent exposées ou modifiées. En outre, veillez à fournir un chemin d'accès qualifié complet afin que le fichier UDL correct soit utilisé pour la connexion.

Les fichiers UDL ne sont pas cryptés. Si vous employez la cryptographie pour protéger davantage la sécurité de vos informations de connexion, vous ne pouvez pas utiliser un fichier UDL pour fournir les informations de chaîne de connexion.

Conserver Persist Security Info défini à False

En définissant Persist Security Info avec la valeur true ou yes, vous permettez que des informations sensibles telles que l'ID utilisateur et le mot de passe, soient obtenues de la connexion après que celle-ci a été établie. Lorsque vous établissez une connexion en fournissant un ID utilisateur et un mot de passe, il est plus sûr que ces informations soient ignorées une fois la connexion établie. Par conséquent, l'option qui offre une meilleure sécurité consiste à définir Persist Security Info avec la valeur false ou no.

Cela est particulièrement vrai si vous fournissez une connexion ouverte à une source qui n'est pas digne de confiance ou encore des informations de connexion persistantes à un disque. En définissant Persist Security Info avec la valeur false vous avez la garantie que la source qui n'est pas digne de confiance n'aura pas accès aux informations de sécurité sensibles de votre connexion et que ces informations ne seront pas copiées sur le disque avec votre chaîne de connexion.

La valeur par défaut de Persist Security Info est false.

Être prudent lors de la constitution de chaînes de connexion à partir d'une entrée de l'utilisateur

Si vous obtenez les informations de chaîne de connexion d'une source extérieure, par exemple si l'utilisateur fournit l'ID utilisateur et le mot de passe, vous devez veiller à ce que les valeurs utilisées pour constituer votre chaîne de connexion ne contiennent pas de paramètres supplémentaires susceptibles de modifier le comportement de votre connexion. Pour préserver la sécurité de votre chaîne de connexion, validez toutes les entrées provenant d'une source extérieure afin de vérifier que leur format est correct.

Validation des entrées

Il est possible d'utiliser des expressions régulières pour vérifier que les entrées correspondent à un format particulier. Le .NET Framework fournit l'objet Regex pour comparer une valeur à une expression régulière. Par exemple, le code suivant valide qu'un ID utilisateur est bien une chaîne alphanumérique de 8 caractères.

Public Static Function ValidateUserid(inString As String) As Boolean
  Dim r As Regex = New Regex("^[A-Za-z0-9]{8}$")
  Return r.IsMatch(inString)
End Function
[C#]
public static bool ValidateUserid(string inString)
{
  Regex r = new Regex("^[A-Za-z0-9]{8}$");
  return r.IsMatch(inString)
}

Voir aussi

Écriture de code ADO.NET sécurisé