2008-12-11 4 views
5

Je crée un composant qui utilise des données pour se connecter à une base de données, ces données incluent l'ID utilisateur et le mot de passe, il stocke ces valeurs dans des variables privées mais n'importe quel programmeur peut voir la valeur dans le débogueur après l'initialisation, donc je me demande comment SqlConnection fait pour cacher cette valeur, quand je vois la valeur de la propriété ConnectionString je vois toutes les infos sauf le mot de passe, son stockage quelque part mais ne le rendant pas visible, Même dans le débogueur, je ne peux voir aucune variable qui stocke le mot de passe, je sais que je peux sécuriser le mot de passe en utilisant SecureString mais je me demande comment est l'implémentation de l'objet SqlConnection.comment sqlConnection cache le mot de passe de la chaîne de connexion

Merci.

Juan Zamudio

Répondre

2

De l'manual:

Le ConnectionString est similaire à une chaîne de connexion OLE DB , mais n'est pas identique. Contrairement à OLE DB ou ADO, la chaîne de connexion qui est renvoyée est la même que la ConnectionString définie par l'utilisateur, moins informations de sécurité si la valeur Persist Security Info est définie sur false (par défaut). Le fournisseur de données .NET Framework pour SQL Server ne persiste pas ou renvoie le mot de passe dans une chaîne de connexion sauf si vous définissez Persist Security Info à true.

Je ne suis pas sûr de la façon dont cela est mis en œuvre. Mon devine non vérifiée est qu'il remplit une structure avec les paramètres de sécurité qu'il envoie ensuite au serveur, ne les stockant réellement que si vous définissez Persist Security Info sur true.