2010-01-29 6 views
16

J'ai créé une application C# (pas une page Web ASP) qui se connecte à un serveur sql 2005. Dans mon code source, le mot de passe et l'ID utilisateur de ce serveur sql sont codés en texte brut dans ConnectionString.crypter les chaînes de connexion SQL C#

SqlConnection con = new SqlConnection(); 
con.ConnectionString = 
     "Data Source=server1;"+ 
     "Initial Catalog=mydatabase;"+ 
     "Integrated Security=no;"+ 
     "User ID=admin;Password=mypassword;"; 
con.Open(); 

Yat-il un moyen facile de chiffrer le mot de passe ou connectionstring tout, que d'autres peuples qui démontent mon outil ne sont pas en mesure de voir le mot de passe?

grâce

Répondre

0

Vous pouvez utiliser encrypt sections dans app.config de la même manière que web.config. MS l'appelle Protected Configuration. Étant donné que les données chiffrées et la clé résident sur la même machine, cela ne fait que rendre plus difficile, mais en théorie, pas impossible d'accéder aux données.

1

Non, vous ne pouvez rendre difficile

Il est préférable de laisser l'application utiliser une connexion de base de données spéciale qui ne se accès aux tables/procédures nécessaires.

4

Il y a deux façons de le faire:

1) Vous pouvez utiliser Secure Configuration Section pour crypter et décrypter strimng de connexion à partir de votre code source:

try 
    { 
     // Open the configuration file and retrieve 
     // the connectionStrings section. 
     Configuration config = ConfigurationManager. 
      OpenExeConfiguration(exeConfigName); 

     ConnectionStringsSection section = 
      config.GetSection("connectionStrings") 
      as ConnectionStringsSection; 

     if (section.SectionInformation.IsProtected) 
     { 
      // Remove encryption. 
      section.SectionInformation.UnprotectSection(); 
     } 
     else 
     { 
      // Encrypt the section. 
      section.SectionInformation.ProtectSection(
       "DataProtectionConfigurationProvider"); 
     } 
     // Save the current configuration. 
     config.Save(); 

     Console.WriteLine("Protected={0}", 
      section.SectionInformation.IsProtected); 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine(ex.Message); 
    } 

2) Vous pouvez Enterprise Library Data Access Bloc d'application pour effectuer le chiffrement à l'aide de RSAProtectedConfigurationProvider ou DPAPIProtectedConfigurationProvider.

Pour une articvle complète aller à ->http://msdn.microsoft.com/en-us/library/89211k9b(VS.80).aspx

+1

merci, mais je ne sais pas comment mettre en œuvre cela. J'ai juste un DLL créé à partir de mon projet C# - pas d'exe et pas d'app.config? aussi cette DLL doit être utilisée sur différents ordinateurs et utilisateurs! – Tobi

+0

Dans un sens, vous pouvez créer un fichier XML et y stocker vos paramètres. Vous pouvez ensuite conserver ce fichier XML dans un emplacement spécifique dans chacun de vos ordinateurs de déploiement, puis le lire. L'une des meilleures techniques consiste à utiliser un gestionnaire de configuration personnalisé, c'est-à-dire une bibliothèque de classes différente qui gère vos éléments de configuration, et vous pouvez utiliser le bloc Congfiguration présent dans la bibliothèque d'entreprise. – Bhaskar

-3

vous pouvez également enregistrer le mot de passe dans et UserName le Registre au lieu de stocker dans le fichier de configuration. Lisez le nom d'utilisateur et le mot de passe du registre lorsque vous essayez de vous connecter à la base de données. N'oubliez pas que vous devez chiffrer le nom d'utilisateur et le mot de passe lors du stockage dans le registre et déchiffrer le nom d'utilisateur et le mot de passe lors de la récupération du registre.

+1

Le stockage d'informations en texte brut dans le registre n'est pas très différent d'un fichier de configuration. Ce n'est plus un sentiment de sécurité que lorsque vous prenez en compte la menace que vous empêchez. S'ils ont déjà accès à ce fichier, ils ont très probablement accès à cette clé de registre. Ils savent ce qu'ils cherchent. –

+0

mais l'OP a explicitement déclaré 'N'oubliez pas que vous devez chiffrer le nom d'utilisateur et le mot de passe' –

+0

Des fichiers de configuration d'application (app.config et web.config) ont été spécialement créés pour contenir ce type d'informations. Il est donc beaucoup plus efficace et simple de gérer l'utilisateur/mot de passe, les chaînes de connexion et tous les autres paramètres d'application avec ces fichiers plutôt que d'utiliser le registre de Windows. Surtout sur un environnement de serveur avec des applications ASP.NET. –

Questions connexes