[C#] Protection mot de passe dans le code

Protection mot de passe dans le code [C#] - C#/.NET managed - Programmation

Marsh Posté le 01-11-2005 à 10:12:11    

bonjour,
Je suis en train de developper un soft qui ce connect a une base mysql.
Dans la chaine de connection je dois specifier le mot de passe de la base.
Le C# pouvant etre decompile le mot de passe sera visible.
Comment faire pour masquer le mot de passe de la base dans mon code c#.
merci
++

Reply

Marsh Posté le 01-11-2005 à 10:12:11   

Reply

Marsh Posté le 01-11-2005 à 12:34:58    

Une solution pas mal (déjà vue en entreprise) :
- stocker la chaîne de connection dans le fichier de config (beaucoup plus simple au niveau maintenance, permet un changement sans recomplier)
- crypter le password dans cette chaine
- décrypter le password au moment de faire la connexion  (connection c'est de l'anglais ;))
 
Je ne peux pas te donner de conseils sur les méthodes de cryptage, mais ça doit se trouver facile sur le net.

Reply

Marsh Posté le 01-11-2005 à 12:43:20    

Bah ouais mais du coup, comment tu donnes le mot de passe à ton SGBD ?
Y'a un truc que j'ai pas pigé ?
T'as moyen de dire à MySql que tu lui file un hashage du password ?

Reply

Marsh Posté le 01-11-2005 à 12:44:50    

_Mose_ a écrit :

Bah ouais mais du coup, comment tu donnes le mot de passe à ton SGBD ?
Y'a un truc que j'ai pas pigé ?
T'as moyen de dire à MySql que tu lui file un hashage du password ?


J'avais pas tout lu [:neowen]
 
J'avais raté le fait que c'était un pwd pour la db :o
Désolé :o
 
post supprimé :o


Message édité par masklinn le 01-11-2005 à 12:45:33

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 01-11-2005 à 13:46:20    

oui mais le pb est que le c# peut etre decompile  
et donc il peut avoir acces a mes fonctions de cryptage et de decryptage

Reply

Marsh Posté le 01-11-2005 à 21:54:51    

oui!  
 
pourquoi n'imagine tu pas que lors du premier démarrage de l'application, il te demande le login et le mot de passe que tu stockerais par exemple dans les registres de windows, ou dans un fichier. Comme ça, l'application ne contiendrait null part le login et le mot de passe puisqu'il référencerais un registre ou un fichier...

Reply

Marsh Posté le 02-11-2005 à 14:01:01    

Comment dire... on pourra toujours trouver un moyen de chopper ton password si tu le stocke qqpart. C'est qu'une question de motivation du cracker.
Sinon y'a une méthode plus sure encore, en utilisant des algos avec clef publique/clef privée, mais là il me semble qu'il faut créer une application serveur pour fournir les clefs. Je peux pas t'en dire plus.
 
Mais là ça te complique beaucoup la vie. Le plus simple c'est encore de faire un web service d'authentification qui va fournir une clef à l'utilisateur (en lui demandant login/password), et un web service d'accès à la base, relié à ton web service d'authentification, qui permet de donner les résultats des requêtes seulement si tu donne une clef valide dedans.
 
Après ça se cracke aussi : tu colle un sniffer sur le réseau et tu choppes le login password... alors tu peux l'encoder, je crois qu'il y'a des dialogbox d'authentification intégrées à Windows qui cryptent le password automatiquement, mais y'a aussi des malins qui savent les décrypter...

Reply

Marsh Posté le 02-11-2005 à 14:06:04    

moi23372 a écrit :

pourquoi n'imagine tu pas que lors du premier démarrage de l'application, il te demande le login et le mot de passe que tu stockerais par exemple dans les registres de windows, ou dans un fichier. Comme ça, l'application ne contiendrait null part le login et le mot de passe puisqu'il référencerais un registre ou un fichier...


 
Si j'ai bien compris la problématique, en fait, Peace50 veut distribuer une application qui accède à une base, mais il ne veut pas que les utilisateurs puisse chopper le password pour aller jouer avec cette base... donc le registre c'est pareil, ca colle pas.  Je me trompe ?

Reply

Marsh Posté le 03-11-2005 à 19:12:34    

oui mais alors sa seule solution c'est de faire un webservice! pas le choix...

Reply

Marsh Posté le 04-11-2005 à 15:40:28    

_Mose_ a écrit :

Comment dire... on pourra toujours trouver un moyen de chopper ton password si tu le stocke qqpart. C'est qu'une question de motivation du cracker.
Sinon y'a une méthode plus sure encore, en utilisant des algos avec clef publique/clef privée, mais là il me semble qu'il faut créer une application serveur pour fournir les clefs. Je peux pas t'en dire plus.
 
Mais là ça te complique beaucoup la vie. Le plus simple c'est encore de faire un web service d'authentification qui va fournir une clef à l'utilisateur (en lui demandant login/password), et un web service d'accès à la base, relié à ton web service d'authentification, qui permet de donner les résultats des requêtes seulement si tu donne une clef valide dedans.
 
Après ça se cracke aussi : tu colle un sniffer sur le réseau et tu choppes le login password... alors tu peux l'encoder, je crois qu'il y'a des dialogbox d'authentification intégrées à Windows qui cryptent le password automatiquement, mais y'a aussi des malins qui savent les décrypter...


 
 
euh...si c'est une appli winform, il va pas aller faire un webservice, non ?
si c une appli webform, les utilisateurs n'ont pas accès au serveur où se trouve l'appli ?
 
 

Reply

Marsh Posté le 04-11-2005 à 15:40:28   

Reply

Marsh Posté le 04-11-2005 à 16:11:41    

alien_nan a écrit :

euh...si c'est une appli winform, il va pas aller faire un webservice, non ?


Pourquoi pas ? C'est pas paske ça s'appelle "Web" service que c'est fait pour le Web... c'est un pur moyen d'éviter de se faire bloquer par les firewalls.

alien_nan a écrit :

si c une appli webform, les utilisateurs n'ont pas accès au serveur où se trouve l'appli ?


Si c'est une application web, je comprend pas pourquoi il veut autant protéger son password.  
Si c'est le cas, y'a deux solutions plus simples :
* Enfermer le serveur à clef dans un placard.
* Embaucher admin de confiance, qui n'aura aucun intérêt à pirater ton serveur.

Reply

Marsh Posté le 04-11-2005 à 21:33:51    

up je me suis déja posée la question et j'ai pas trouvé de solution dans ma tête :) et donc ca m'intérèsse grandement !

Reply

Marsh Posté le 04-11-2005 à 22:17:45    

à ce que j'ai entendu ce n'est pas possible !
 
Essaye d'allouer le minimum de droit à l'utilisateur de ta base de donnée et fait tes changements en appelant uniquement des procédures stockées !
 
Tu peux toujours crypter ton mot de passe dans ton code etc mais ca sera juste plus compliqué mais toujours pas impossible : il faut bien que le logiciel ai le mot de passe en clair à un moment ou à un autre pour se connecter à la base de donnée ! Il faut donc que si le mot de pase est volé, cela ne soit pas très grave d'ou l'utilisation de procédures stockées !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed