2010-11-30 21 views
1

Supposons que app.config est, pour une raison quelconque, pas une option.Comment crypter la chaîne de connexion sans app.config

Comment est possible de stocker une chaîne de connexion cryptée, soit dans l'assemblée elle-même ou une autre app.config comme fichier XML?

(je ne pense pas que cela importe, mais c'est un complément COM pour Excel 2003.)

+0

est-ce une application winform? application Web?? ou sinon? – Singleton

+0

@Hansmukh: Un complément COM pour Excel 2003. – Arlen

Répondre

0

Vous pouvez utiliser les classes dans l'espace de noms System.Security.Cryptography à crypter/décrypter un fichier. Cependant, vous rencontrez un autre problème, où va stocker la clé? Si vous stockez dans l'ensemble, l'ensemble peut être naviguerez pour trouver la clé, puis quelqu'un d'autre peut l'utiliser pour déchiffrer vos données .

faire vérifier

http://www.codeproject.com/KB/security/encryptstrings.aspx

et

http://sharpertutorials.com/simple-string-encryption-and-decryption/

+0

droit, un problème majeur est de déterminer comment sauvegarder la clé. – Arlen

+0

Je ne dirais pas un problème majeur, je dirais un problème impossible. Si votre assembly a la clé, alors un attaquant a la clé. Vous pouvez le rendre difficile mais c'est juste "la sécurité par l'obscurité" ce n'est pas tellement le cryptage qui protège la chaîne de connexion c'est la probabilité que vous ayez caché la clé assez bien pour que cela ne vaille pas la peine pour les attaquants. Si ça vaut le coup ... ils trouveront la clé. –

0

Sonne comme une bonne utilisation pour la classe ProtectedData.

http://msdn.microsoft.com/en-us/library/system.security.cryptography.protecteddata.aspx

Appel Protéger et passer dans un tableau d'octets contenant votre chaîne de connexion retournera un tableau d'octets de données chiffrées (qui peut ensuite être converti en base64 et stocké dans un fichier local.

Appel Unprotect et passer dans un tableau d'octets contenant une chaîne de connexion cryptée retournera un tableau d'octets contenant la chaîne de connexion en texte brut, puis utiliser simplement Convertir en ASCII ou UTF-8, etc ...

De toute évidence, si l'attaquant accède au compte utilisateur exécutant l'application ils pourront pour récupérer la chaîne mais il fournit un peu plus de sécurité que de stocker la chaîne de chiffrement dans l'assemblage (ce qui peut permettre la récupération sans avoir accès au compte de l'utilisateur).