2009-03-06 11 views
16

Quelle est la meilleure façon de gérer les chaînes de connexion dans une application Web, du point de vue de la sécurité? Je l'ai fait de plusieurs façons différentes. Je les ai stockés sous la forme de touches de configuration Web.config en texte brut. J'ai également créé une classe "Constants" qui a des propriétés de chaîne en lecture seule publiques pour chaque chaîne de connexion.Meilleures pratiques pour les chaînes de connexion

Quelqu'un a-t-il des recommandations pour la gestion des chaînes de connexions de telle sorte que je ne crains pas qu'elles soient découvertes avec malveillance? Je suis définitivement ouvert au cryptage.

Répondre

3

vous pouvez encrypt your connection strings dans votre fichier web.config.

Le stockage de chaînes de connexion dans une classe en tant que propriété ou constante n'est pas sécurisé. Toute personne utilisant un désassembleur peut voir votre chaîne de connexion.

meilleure façon est le cryptage de la configuration.

+0

Vous pouvez également utiliser SecureString plutôt qu'une chaîne normale afin qu'un vidage de mémoire ne l'expose pas ... si vous êtes ainsi incliné. – Stimul8d

2

Vous pouvez crypter et décrypter des sections de votre web.config en utilisant l'outil de ligne de commande aspnet_regiis:

Crypter: aspnet_regiis de les "connectionStrings" "c: \ dossier \"

Décrypter: aspnet_regiis -pdf "connectionStrings" "c: \ dossier \"

1

@vartec: il est pas tout à fait un SNAFU ..

IIS peut en effet lire le texte crypté si vous chiffrez en utilisant la norme .N Mécanisme de chiffrement ET qui ne casse aucun codage UTF8 ou Unicode. Microsoft encourage également cela comme une meilleure pratique.

Vous pouvez voir un exemple sur le chiffrement chaîne de connexion de celle-ci:

« Comment: Les chaînes sécurisées de connexion lors de l'utilisation de contrôle des sources de données »

http://msdn.microsoft.com/en-us/library/dx0f3cf2.aspx

2

Si vous avez le contrôle total sur le serveur vous pouvez également stocker la chaîne de connexion dans votre Machine.Config. Cela peut être pratique si vous avez beaucoup d'applications qui fonctionnent toutes avec le même serveur de base de données.

Je ne sais pas si cela vaut la peine de le chiffrer puisque vous devez accéder au serveur en premier lieu pour voir le fichier machine.config. Et si votre serveur a été compromis, Encyrption n'empêchera pas un pirate d'extraire les informations d'identification du fichier de configuration.

+0

Il vous protège contre l'exposition accidentelle du contenu de web.config, tant qu'un attaquant ne peut pas télécharger son propre fichier .aspx dans le répertoire de votre application. – finnw

+0

Une mise en garde similaire s'applique aux mots de passe utilisateur de hachage - il vous protège uniquement des fuites de sauvegarde de base de données. Les deux sont inutiles si un attaquant obtient le contrôle du serveur Web - mais ils valent la peine de le faire quand même. – finnw

+0

Nous faisons cela là où je travaille pour nos différents serveurs (dev, test, prod) donc la chaîne de connexion appropriée est toujours utilisée pour chacun. Fonctionne très bien. – spilliton

Questions connexes