Bonjour a tous ! J'aimerais creer une application qui pourra etre securisee par un
mot de passe mais le probleme c'est que je ne sais pas ou le stocker.
Pouvez-vous m'aider !![]()
Bonjour a tous ! J'aimerais creer une application qui pourra etre securisee par un
mot de passe mais le probleme c'est que je ne sais pas ou le stocker.
Pouvez-vous m'aider !![]()
Bonjour,
Si tu ajoute une classe de cryptage / déryptage à ton appli tu peux stocker ton mot de passe en "chiffré" dans app.config ou autre.
Perso c'est ce que j'utilise pour certains prog manipulant des data sensible, le prog à un module de décryptage. Bon de toute façon la sécurité du pass chiffré n'est pas inviolable, mais le blue ray non plus![]()
Si tu stockes un HashMD5 dans ton code, il est visible en décompilant mais ça ne change rien au fait qu'il faut trouver une chaine qui génère le même Hash pour se connecter.
De toute façon, à moins de déployer ton appli compilée en natif, tu t'exposes toujours à la décompilation.
Au final, il n'y a pas de sécurité parfaite, mais on peut identifier plusieurs niveaux :
- if (motdepasse_saisi == motdepasse_stocké) -> Contourné directement par décompilation : le mot de passe est en clair.
- if (hash(motdepasse_stocké) == hash(motdepasse_saisi)) -> on sait quel hash il faut générer, reste à faire tourner la machine assez longtemps pour tomber sur une bonne chaine d'entrée) + en décompilant, on peut purement et simplement supprimer le check et recompiler.
- if (serviceweb(hash(motdepasse_stocké)) == true) -> tu masques le hash recherché mais, tu es toujours vulnérable au décompilation/suppression/compilation.
- Compilation en natif avant déployement, on est toujours exposé à un attaquant qui sait lire et altérer le code machine, mais ça met la chose hors de portée de l'utilisateur ou du hacker lambda (adolescement de 13 ans qui va sur astalavista).![]()
Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.
Bonnes pratiques pour les accès aux données
Débogage efficace en .NET
LINQ to Objects : l'envers du décor
Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter
ça existe depuis longtempsEnvoyé par sperot51
see ngen.exe
Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.
Bonnes pratiques pour les accès aux données
Débogage efficace en .NET
LINQ to Objects : l'envers du décor
Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter
En utilisant ngen.exe, tu génères une image native de ton assembly que tu stockes dans une partie spécifique du GAC, ça permet de se débarrasser de l'étape de jitting, et accélère le démarrage de l'appli.
L'inconvénient est que celà se génère à partir de l'assembly, mais tu dois pouvoir la supprimer de la machine cliente après installation de l'image native.
Pour info, ngen est fourni avec le framework 2.0. Il existe aussi des soft commerciaux : Remotesoft .NET Protector par exemple.
Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.
Bonnes pratiques pour les accès aux données
Débogage efficace en .NET
LINQ to Objects : l'envers du décor
Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter
[UPDATE]Ngen contient encore les metadata, ça ne génère pas une image native complète, donc à priori, c'est encore décompilable, et plus, il y a encore besoin de l'assembly d'origine pour fonctionner (d'après ce que j'ai pu lire sur le sujet). Pour ce qui est de 'compiler chez le client', tu peux intégrer cette étape dans ton installeur (installshield par exemple, ou nsis), SharpDevelop le fait déjà pour optimiser son temps de chargement.
Il reste donc les soft commerciaux.
Une autre solution courante est de mettre le code sensible ou sous propriété intellectuelle dans une dll non managée (écrite en C++ non managé par exemple) et de faire du p/invoke.
Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.
Bonnes pratiques pour les accès aux données
Débogage efficace en .NET
LINQ to Objects : l'envers du décor
Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter
Pourquoi, au lieu de te compliquer la vie, tu le mets pas dans le code de ton appli directement? Tu prends un textbox ou l'utilisateur proposera la reponse du mot de passe, et un bouton a coté, il ecrit le mot qu'il pense, et il clique, si c'est bon, alors il peut utiliser l'appli.
Oui mais mon logiciel peut etre protege par un mot de passe. Cela sinifie que l'utilisateur peut taper le mot de pase qu'il souhaite afin que d'autres utilisateurs ne puissent y acceder !
Si tu utilises une base de données, tu peux stocker le hash du mot de passe dans la base. Sinon tu peux stocker ce hash dans la base de registre le cas échéant.
Cela dit, ce genre de technique est facile à contourner... suppression de la clé, suppression de la valeur dans la base...
Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.
Bonnes pratiques pour les accès aux données
Débogage efficace en .NET
LINQ to Objects : l'envers du décor
Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter
Merci beaucoup pour vos reponses !Je crois que je vais utiliser une base donnees qui me semble la meilleure solution !
Partager