2010-03-17 2 views
19

J'ai inscrit le nom de ma base de données, mon nom d'utilisateur et mon mot de passe dans mon fichier web.config comme chaîne de connexion.Cryptage de la chaîne de connexion dans le fichier web.config en C#

Je veux crypter ces données. Comment puis-je le faire?

<connectionStrings> 
    <add name="ISP_ConnectionString" connectionString="Data Source=JIGAR; 
      Initial Catalog=ISP;Integrated Security=True; 
      User ID=jigar;Password=jigar123; 
      providerName="System.Data.SqlClient" /> 
</connectionStrings> 
+0

Cela peut valoir le coup d'œil: http://www.beansoftware.com/ASP.NET-Tutorials/Encrypting-Connection-String.aspx – Brett

Répondre

5

I une application particulière, j'appelle la routine suivante au démarrage:

Private Sub CheckConfigFile() 
    Dim config As System.Configuration.Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None) 
    Dim sec As ConfigurationSection = config.AppSettings 

    If sec IsNot Nothing Then 
     If sec.SectionInformation.IsProtected = False Then 
      Debug.Write("Encrypting the application settings...") 
      sec.SectionInformation.ProtectSection(String.Empty) 
      sec.SectionInformation.ForceSave = True 
      config.Save(ConfigurationSaveMode.Full) 
      Debug.WriteLine("done!") 
     End If 
    End If 
End Sub 
+14

Le cryptage au démarrage de l'application ne vous aide pas si quelqu'un entre dans votre serveur Web. Il devrait être chiffré lorsqu'il est déployé. –

+4

+1 pour donner une réponse plutôt qu'un simple lien. –

+0

Excellent. Plutôt que de l'exécuter au démarrage, créez une page ASPX distincte dans laquelle vous pouvez exécuter ce code si nécessaire (juste après le déploiement). Pour les personnes avec "", définissez temporairement "" avant de l'exécuter, puis revenez à "Moyen" lorsque vous avez terminé. –

15

Vous pouvez simplement utiliser l'outil apnet_regiis pour ce faire, il suffit de faire

C:\WINDOWS\Microsoft.Net\Framework(64)\(.Net version)\aspnet_regiis -pe "connectionStrings" 

pour un particulier application, vous pouvez utiliser l'argument de l'application -app nom de l'application, et pour un site spécifique, vous pouvez également utiliser l'argument du site "-site site id ".

Pour plus de détails, voir http://msdn.microsoft.com/en-us/library/dtkwfdky.aspx.

Notez que cela ne fonctionne que pour une application Web et non pour une application Windows. Notez également que vous devez l'exécuter à partir d'une invite de commande avec des privilèges élevés ("Exécuter en tant qu'administrateur").

+1

Il crypte la chaîne de connexion avec la clé DPAPI, qui est spécifique à une machine. Dans un environnement webfarm, cela fonctionnera-t-il? – Dhanuka777

+0

@Dhanuka Pourquoi pas? –

+1

répondre à ma propre question, eh bien, il devrait fonctionner si le cryptage est fait sur les deux serveurs séparément. Le scénario est venu à l'esprit que vous ne pouvez pas utiliser le fichier crypté webconfig dans le serveur A pour utiliser dans le serveur B. – Dhanuka777

Questions connexes