0

Autant que je sache, si vous voulez construire dynamiquement puis crypter une chaîne de connexion, il n'est pas possible d'utiliser le fichier de configuration de l'application pour les stocker si vous avez besoin de modifier la chaîne de connexion après la compilation.Impossible de stocker les chaînes de connexion cryptées dans le fichier app .exe.config?

Juste pour clarifier les choses, voici ce que je suis en train de réaliser:

  • Je veux déployer un programme client à des endroits où - donc je ne sais pas leur nom de serveur de base de données et mots de passe
  • Les
  • Tous les utilisateurs du programme devront accéder à la base de données en utilisant le même nom d'utilisateur
  • Je dois chiffrer la chaîne de connexion car les clients ne veulent pas que les mots de passe soient visible
  • La chaîne de cryptage doit contenir le mot de passe

Alors, je voudrais que mon programme pour inviter l'utilisateur à un nom de serveur, nom d'utilisateur, PWD etc, puis créer la chaîne de connexion et le stocker chiffré dans le. fichier de configuration

Voici ma compréhension de la façon dont les poignées My.Settings connectionStrings:

  • la section connectionStrings dans le fichier .config du programme peut être crypté (par exemple http://msdn.microsoft.com/en-us/library/ms254494(v=vs.110).aspx) (je ce beau travail)

  • Cependant, pour obtenir une chaîne de connexion dans la section du fichier .config, il doit être conservé comme ConnectionString dans My.Settings

  • des chaînes de connexion dans MySettings sont d'application champ d'application - ne peuvent donc pas être modifié lors de l'exécution

Ainsi, il semble que vous pouvez chiffrer une chaîne de connexion, mais seulement si vous savez ce que la chaîne de connexion est quand vous écrivez le programme.

Si vous êtes un client et que vous souhaitez modifier ConnectionString, vous ne pouvez pas modifier le fichier .config (car il est crypté), et le programme lui-même ne peut pas modifier la chaîne de connexion et la stocker dans. fichier de configuration.

Est-ce correct? Est-il impossible d'utiliser la fonctionnalité de chiffrement de fichier de configuration de l'application pour stocker une chaîne de connexion créée au moment de l'exécution?

+0

Merci, T.S., pour votre commentaire. J'ai décidé que My.Les paramètres n'étaient pas viables pour stocker une chaîne de connexion modifiée par l'application elle-même. Donc, je l'ai stocké dans son propre fichier de configuration XML, et crypté le mot de passe avant de le stocker. Cet excellent exemple de Microsoft a été très utile: http://msdn.microsoft.com/en-us/library/ms172831.aspx – user3012629

Répondre

0

Vous avez peu d'options ici. Premièrement, utilisez le chiffrement de la machine pour la chaîne de connexion. Et [je crois] que cela fonctionnera même sur la ferme Web si vous définissez la même clé machine sur chaque serveur participant.

Une autre chose que vous pouvez faire est d'écrire le gestionnaire de section de configuration personnalisé Custom Config Section, qui sait comment crypter/décrypter des éléments dans la section spécifique. Vous avez besoin d'un vecteur, que vous pouvez écrire directement dans le gestionnaire lui-même, et la clé. La clé peut être une clé de licence logicielle que vous fournissez à votre client. Vous pouvez faire une clé à la volée, à partir du fichier sérialisé ou de l'assemblage. Avec la section personnalisée, cela fonctionnera très bien, et il sera plus difficile pour les utilisateurs de comprendre où et d'où vient.

Questions connexes