2009-11-05 4 views
3

J'ai une situation dans laquelle les utilisateurs accèdent au serveur MySQL distant dans l'application C#.Comment cacher en toute sécurité des informations d'identification de base de données dans une application C#?

Fondamentalement,

Un utilisateur en utilisant l'application C# sur son/son bureau - >>>> se connecte à distance - >>>>>>>> [REMOTE]

Comment puis-je cacher en toute sécurité base de données détail de connexion?

J'ai peu d'idées, mais je ne pense pas qu'elles soient sûres.

  1. données de connexion de base de données Crypter dans un fichier et le stocker dans les répertoire de l'application.
  2. page de connexion rapide et laisser un utilisateur entrer un nom d'utilisateur/mot de passe, puis transférer les données de connexion de base de données à l'ordinateur de l'utilisateur.
+0

Votre modèle de menace n'est pas entièrement spécifié. Êtes-vous en train d'essayer de cacher ces données à l'utilisateur ou à d'autres méchants? Si ce dernier, les méchants ont-ils accès à la machine de l'utilisateur ou non? –

+0

@Keith Randall // En fait, les deux étant donné qu'un utilisateur devient parfois un mauvais utilisateur. – Moon

Répondre

5

Peu importe ce que vous faites si les informations d'identification se retrouvent dans l'application en clair, vous êtes vulnérable. Implémentez une couche de service devant la base de données ou si des connexions directes sont essentielles, essayez de trouver un schéma qui autorise un compte de base de données unique pour chaque utilisateur, puis autorisez-les de manière appropriée dans la base de données.

+0

Couche de service +1 –

+0

+1 pour la couche de service. – Glenn

3

Généralement, il est préférable de demander à l'utilisateur les informations d'identification afin que chaque compte puisse être activé ou désactivé par l'administrateur. Sauf cela, il existe des API pour crypter tout ou partie du fichier de configuration. Voici un exemple d'article:

http://www.codeproject.com/KB/dotnet/EncryptingTheAppConfig.aspx

+0

Oui, demandez à l'utilisateur. –

+0

+1 Utilisez system.configuration.configurationmanager avec une chaîne de connexion chiffrée. Ou des informations d'identification uniques. –

0

je suggère une certaine forme de gestion de session en fonction des informations d'identification utilisateur. Cela peut être accompli de plusieurs façons. Par exemple, vous pouvez accomplir ceci en enveloppant simplement votre accès à la base de données avec un système dorsal. Vos clients de bureau sont inconscients de la base de données et interagissent uniquement avec le système principal. Malheureusement, implémenter ce niveau d'indirection n'est pas trivial si vous devez le faire à partir de zéro mais cela rendra votre application plus robuste et plus flexible. Les services WCF peuvent aider à accomplir ceci.

+0

J'ai raté la réponse de sipwiz. C'est à peu près la même chose que celle-ci. – Newbie

Questions connexes