2012-04-24 2 views
3

Comment crypter uniquement les mots de passe dans un fichier web.config?Cryptage uniquement Mots de passe dans web.config ASP.NET

<add name="PSystem" connectionString="Server=test;Database=Dev;User ID=testuser;[email protected];Trusted_Connection=False;Encrypt=True;" providerName="System.Data.SqlClient" /> 
+1

possible double question http://stackoverflow.com/questions/4525515/protect-encrypt-password-in-the-web-config-file-asp-net – pmtamal

+0

Il suffit de les sortir du fichier web.config. Voir http://www.asp.net/identity/overview/features-api/best-practices-for-deploying-passwords-and-other-sensitive-data-to-aspnet-and-azure – RickAndMSFT

Répondre

2

Je crois que des mécanismes intégrés de chiffrement fonctionnent sur toute la section connectionString:

See this website for more info

Si vous souhaitez chiffrer en mémoire les mots de passe, peut-être entré par l'utilisateur via une connexion forme, vous pouvez utiliser SecureString

+0

Salut, au lieu de l'entier chaîne de connexion est-il possible de crypter uniquement les mots de passe? –

+0

Comme je l'ai mentionné avant les outils intégrés vous permettent de le faire sur toute la section. Vous pouvez accomplir ce dont vous avez besoin en chiffrant le mot de passe à l'aide de votre propre méthode, puis en le décryptant au sein de votre application lorsqu'elle démarre ou juste avant de l'utiliser pour une connexion DB. – Ulises

1

vous pouvez essayer d'utiliser des drapeaux dans la chaîne de connecction comme suit:

<add name="PSystem" 
connectionString="Server=test; 
        Database=Dev; 
        User [email protected]@; 
        Password=#Password#; 
        Trusted_Connection=False; 
        Encrypt=True;" 
    providerName="System.Data.SqlClient" /> 

alors vous pouvez avoir l'utilisateur crypté et mot de passe comme suit:

<add key="DB_User" value = [Encrypted Username]> 
<add key="DB_Password" value = [Encrypted Password]> 

Ensuite, dans le code que vous venez de remplacer les drapeaux:

string _connectionString = ConfigurationManager.ConnectionStrings["PSystem"].ConnectionString; 

string user = Decrypt(ConfigurationManager.AppSettings["DB_User"]); 
string password = Decrypt(ConfigurationManager.AppSettings["DB_Password"]); 

_connectionString = _connectionString.Replace("##User##", user).Replace("##Password##", password); 
1

Pour crypter le fichier de configuration contenu, utilisez la Outil Aspnet_regiis.exe avec l'option -pe et le nom de l'élément de configuration à chiffrer.

aspnet_regiis -pe "connectionStrings" -app "/ SampleApplication" -prov "RsaProtectedConfigurationProvider"

Source: http://msdn.microsoft.com/en-us/library/zhhddkxy(v=vs.100).aspx