2010-01-28 15 views
3

Je fais une application de bureau (appelons-la application) qui utilise la base de données (mysql). Les utilisateurs de plus d'applications partagent un utilisateur de base de données. Exemple: les utilisateurs d'applications John et Mike se connecter à DB « dbuser », etc.Comment enregistrer efficacement le mot de passe de base de données dans une application de bureau?

Le problème est: Comment enregistrer efficacement les mots de passe pour les utilisateurs DB? (les pwds des utilisateurs de l'application sont stockés dans la base de données).

Solutions possibles J'ai trouvé: 1. dans le code - c'est en fait assez stupide: D 2. dans le fichier texte INI - facile à lire! 3. crypté dans le fichier externe - bon, mais besoin d'accéder à l'application.

Répondre

1

(les pwds des utilisateurs de l'application sont stockés dans la base de données).

mots de passe stockés Crypter en utilisant l'algorithme SHA1/SHA2. C'est la technique la plus utilisée. Je ne suis pas un développeur .NET mais je suis assez sûr qu'ils fournissent la fonction quelque part.

Lorsque l'utilisateur se connecte, cryptez à nouveau le mot de passe donné et comparez-le à celui enregistré. Si elles sont égales, laissez l'utilisateur se connecter.

+0

comment éditez-vous alors? – Michal

+0

Vous venez de les écraser. Voir par exemple n'importe quel site web dynamique: si vous voulez changer votre mot de passe, vous devez fournir l'ancien et ensuite écrire le nouveau. Le système crypte l'ancien mot de passe donné, vérifie si celui-ci est égal au mot de passe réellement stocké, crypte le nouveau mot de passe et écrase le mot de passe stocké. – dgraziotin

+0

Je vois. D'accord, je vous donne un exemple. Je décide de changer l'emplacement (IP) du serveur DB utilisé par mon application. Je devrais le faire via l'interface graphique de l'application ou juste "manuellement" modifier un fichier extern de l'application charge des données? – Michal

1

Vous pouvez le stocker dans le fichier INI au format crypté. C'est le meilleur moyen à mon humble avis. Je stocke la chaîne de connexion dans l'application App.config de l'application .NET dans le format crypté.

EDIT:

Pour modifier la chaîne de connexion, j'utiliser une autre valeur de configuration dans AppSettings de fichier App.config CSEncryption = "Y | N | R"

si elle est Y, la chaîne de connexion est cryptée, décrypter et l'utiliser.

Si c'est N, la chaîne de connexion n'est pas cryptée, utilisez-la directement.

si elle est R, la chaîne de connexion n'est pas cryptée, cryptez-la et mettez à jour la chaîne de connexion et définissez CSEncryption sur 'Y' dans App.Config.

+0

et comment éditez-vous ensuite le fichier crypté? lors de la migration sur un autre nom d'hôte de base de données? – Michal

+1

en plus de cela, vous devez toujours utiliser un canal sécurisé (SSL) pour communiquer avec le serveur, sinon avec un peu d'effort, n'importe qui peut renifler certains paquets et trouver le mot de passe – rsilva4

+0

+1 à rsilva. Si la base de données est accessible sur un réseau, c'est une bonne idée d'utiliser le protocole SSL pour communiquer avec lui – dgraziotin