web-dev-qa-db-fra.com

Chiffrer la chaîne de connexion dans app.config

Je ne parviens pas à chiffrer une chaîne de connexion dans app.config. J'ai un code qui protégera la section connectionStrings de app.config, mais le mot de passe est toujours affiché en clair.

Je dois chiffrer la chaîne de connexion afin qu'elle ne soit pas en texte brut lors du déploiement. Je vois des questions similaires sur SO pour web.config, mais pas app.config.

38
Blade3

Regardez Cet article il contient des exemples très utiles. Vous recherchez fondamentalement System.Configuration.SectionInformation.ProtectSection pour vous aider ici. 

Jetez également un coup d’œil à Implémentation de la configuration protégée

22
John Mitchell

Vous pouvez facilement appliquer la même solution que web.config, il vous suffit de renommer votre app.config en web.config, de le chiffrer à l'aide de l'outil aspnet_regiis puis de le renommer en app.config.

  1. Renommez app.config en web.config
  2. Ouvrez l'invite de commande et tapez:
    %windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pef "connectionStrings" c:\<folder containing your web.config> (arrêtez au niveau du dossier et ne mettez pas le "\" final)
  3. renommez web.config dans app.config 

Vous pouvez l'ouvrir dans le bloc-notes pour voir le fichier crypté. Dans Visual Studio, vous verrez que c'est déchiffré. Vous pouvez utiliser votre chaîne de connexion de la même manière que si elle n’était pas chiffrée.

48
benoit

Définir l'emplacement de config File

Configuration config  = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

si vous voulez chiffrer connectionStrings

config.ConnectionStrings.SectionInformation.ProtectSection(Nothing);

vous devez être au courant des parties de la configuration de l'application 

donc si vous voulez chiffrer AppSettings

config.AppSettings.SectionInformation.ProtectSection(Nothing);

 enter image description here

3
Salem Ahmed

• renommer le fichier App.config en web.config
• Lancer l'invite de commande en tant qu'administrateur:

Pour chiffrer:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef "connectionStrings" l'emplacement de votre projet entre guillemets et -prov "DataProtectionConfigurationProvider" Ex: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef "connectionStrings" "D:\location\location1\location" -prov "DataProtectionConfigurationProvider" 

Pour déchiffrer:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pdf "connectionStrings" l'emplacement de votre projet entre guillemets Ex: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pdf "connectionStrings" "D:\location1\location" 

Pour une erreur: ajouter ceci dans la configuration xmlns="http://schemas.Microsoft.com/.NetConfiguration/v2.0" 

Comme ça:

 enter image description here

• Enfin, renommez web.config en App.Config

1
anantha Krishnan

Un moyen d'automatiser cela:

ProjectSettings> Compile> BuildEvents> Modifier la post-génération

Collez le code ci-dessous:

SET ApplicationName=YourAppWithoutExtention
echo.
echo POST BUILD ACTIONS
echo ====================

if EXIST web.config (
    echo Deleting web.config
    DEL web.config
)

echo Renaming %ApplicationName%.exe.config to web.config
REN %ApplicationName%.exe.config web.config

echo Running aspnet_regis against webconfig
SET rpath=%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pef "connectionStrings" "$(TargetDir)
SET rpath=%rpath:~0,-1%"
echo Path: %rpath%
%rpath%

echo Renaming web.config to %ApplicationName%.exe.config 
REN web.config %ApplicationName%.exe.config

echo Done.

Remplacer "YourAppWithoutExtention" par le nom de votre application. 

Ensuite, chaque fois qu'il se construit, il crypte automatiquement votre app.config.

0
stigzler