2010-07-08 4 views
1

Est-ce vraiment une bonne chose de mettre des chaînes de connexion avec des mots de passe dans le fichier app.config?ConnectionStrings dans app.config. Et la sécurité?

Il me semble que le fichier app.config n'est pas crypté et que les informations de mot de passe peuvent être facilement lues.

J'ai une application qui accède à une base de données pour laquelle l'utilisateur final prévu n'a pas d'authentification. Un utilisateur/mot de passe de groupe est utilisé. L'application ne démarre que si l'utilisateur Windows actuel se trouve dans un groupe Active Directory. Ainsi, une fois dans l'application, l'utilisateur est autorisé à se connecter à la base de données en utilisant l'utilisateur du groupe.

Quelle serait la bonne façon de gérer de telles chaînes de connexion? Cachez-les dans le code source?

NOTE ceci est pour une application autonome - pas ASP, IIS etc

Cela a fonctionné pour moi

(grâce à Jon Galloway - http://weblogs.asp.net/jgalloway/archive/2008/04/13/encrypting-passwords-in-a-net-app-config-file.aspx)

private void EncryptConfigSection() 
{ 
    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
    ConfigurationSection section = config.AppSettings; 
    if (section != null) 
    { 
     if (!section.SectionInformation.IsProtected) 
     { 
      if (!section.ElementInformation.IsLocked) 
      { 
       section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider"); 
       section.SectionInformation.ForceSave = true; 
       config.Save(ConfigurationSaveMode.Full); 
      } 
     } 
    } 
} 

Cela fonctionne en chiffrant le fichier de configuration exe la première fois que l'application s'exécute. Je n'ai pas trouvé un moyen de le faire dans le cadre du processus d'installation afin que le fichier de configuration soit entièrement lisible jusqu'à ce que l'application soit démarrée pour la première fois. Peut-être que quelqu'un a une idée ...

Répondre

6

Vous pouvez chiffrer des parties du fichier app.config ou web.config, voir for example this post pour plus d'informations. Spécifiquement, this MSDN article décrit différentes manières de sécuriser les chaînes de connexion.

+0

Lecture de l'article MSDN Je vois la note 'La chaîne de connexion ne peut être décryptée que sur l'ordinateur sur lequel elle a été cryptée.' Est-ce que cela signifie que je ne peux pas distribuer app.config? Est-ce que app.config peut seulement être décrypté sur la machine qui a effectué le chiffrement? – paul

+0

C'est exact. Vous ne pouvez pas simplement déployer xcopy, vous devrez ensuite exécuter un script pour définir les paramètres de configuration ou, si vous créez un programme d'installation, définir des paramètres dans une action personnalisée post-installation. –

0

En outre, quelle version d'IIS exécutez-vous? Est-ce un hébergement partagé? Ou avez-vous un accès administrateur à IIS? Si c'est le cas, consultez vos paramètres IIS ASP.NET dans le Gestionnaire des services Internet. Vous pouvez spécifier ConnectionStrings.

2

Vous devez utiliser l'authentification intégrée et avoir l'utilisateur AppPool authentifié sur le SQL avec juste ce qu'il doit exécuter. Avec cela, vous n'avez pas besoin de fournir le mot de passe dans la configuration, et la connexion utilise l'utilisateur du pool d'applications pour s'authentifier auprès du serveur SQL.

par conséquent vous avez la plus haute sécurité.

Questions connexes