PROTÉGER UNE APPLI PAR MOT DE PASSE (C#)

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 29 mars 2011 à 06:50
cs_bigboss9 Messages postés 162 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 20 juillet 2013 - 30 mars 2011 à 13:29
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/53000-proteger-une-appli-par-mot-de-passe-c

cs_bigboss9 Messages postés 162 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 20 juillet 2013
30 mars 2011 à 13:29
Oui Renfield, on peut trouver ce genre de personnes, qui veulent progresser. Mais soyons honnêtes, sur la quantité de codes de bonne qualité que tu as produits, sur 100 téléchargements, combien de personnes ont épluché le code source ? Sur ceux qui ont épluchés le code source, combien l'ont compris ?

On en revient toujours au même et à la formation de base que possède. Plus elle est riche, plus il progressera. Moins elle est riche, non pas qu'il ne progressera pas mais il va stagner voir même, prendre de TRÈS mauvaises habitudes et ne comprendra pas ce qu'un code bien écrit signifie et pourquoi il à été écrit de cette manière.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 mars 2011 à 06:04
Je suis sur CS depuis quelques annees, assez actif sur le Forum

Alors oui, on a toujours des gens qui souhaitent un resultat, pas d'explication
Des gens a qui il faut tenir la main pour chaque ligne de code

Mais j'ai pu remarquer des dizaines de personnes curieuses, qui "en voulaient"... des gens qui ont sacrement monte en competence et sont devenus vraiment bons, se posant les bonnes questions, etc.
Et ca, ca pousse a continuer a aider

Sans compter qu'aider, meme les plus debutants c'est hyper formateur:
comprehension du probleme, explique avec les mots d'un autre
Recherche d'information, si le sujet nous plait mais qu'on le maitrise mal (lecture de doc, essais minute etc.)
Explication de la solution et de la problematique avec les mots de l'autre...
...
cs_bigboss9 Messages postés 162 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 20 juillet 2013
29 mars 2011 à 14:54
Non pas que l'amateur n'ait pas de place mais il se retrouvera vite limité. Parce qu'il code mal, il aura du mal à entrevoir les possibilités techniques de coder telle ou telle chose. Il aura tendance à penser que telle chose est impossible à coder alors qu'un peu d'ordre et de méthode arrivent généralement au bout d'une idée, même compliquée.
graveen Messages postés 2 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 29 mars 2011
29 mars 2011 à 14:33
Tu parles (et tu es bien sûr) comme un développeur pro ! J'ai tendance à penser que CS est au contraire pour le développeur du dimanche. Honnêtement, je suis inscrit ici depuis quelques années, je ne lis que les blogs - par contre j'y passe trés souvent - mais je regarde trés rarement une source (celle là, c'est sur une erreur de clic :D).

Je crois que la première fois que j'ai atterri sur CS, en voyant tous les languages traités, je me suis demandé s'il existait une communautée pour remplir ces pages. Tout en sachant que developpez.com draine pas mal de monde et en général d'un niveau supérieur, sans compter que nous sommes tous sur MSDN, StackOverflow et CodeProject, pas vraiment sur CS, dès qu'il nous faut des explications pointues. Tu me diras, partager des sources et discuter de point de vues techniques, sont 2 aspects différents.

Je comprends un peu ton raisonnement, et ton envie de tirer tout ça vers le haut, ceci dit.

Et p
cs_bigboss9 Messages postés 162 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 20 juillet 2013
29 mars 2011 à 14:16
Edit pour GRAVEEN :

OK, on accueille les nouveaux. Mais quand le plus site francophone de programmation .Net forme des débutants par des codes de débutants, ça fini par ne plus former personne.

Franchement, j'aurais honte de poster un truc comme ça. La question n'est pas de savoir si c'est d'un niveau débutant mais de savoir s'il s'est au moins posé la question de réfléchir à ce qu'il faisait.

Pour soumettre et discuter, un existe un forum. Un débutant qui tombe sur un code comme ça avec aucune alerte dans les commentaires (ni note) sur la qualité, franchement ça fait peur.

Désolé guiguizeitzt mais on apprend pas sans se ramasser la tronche. Tu t'es pris une sacré pelle, essaye de comprendre pourquoi.
cs_bigboss9 Messages postés 162 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 20 juillet 2013
29 mars 2011 à 14:10
Ouais, OK je reconnais, j'ai été un peu dur mais ça n'est pas la première fois que j'en discute dans des commentaires, sur le fait que ce site est déjà ultra-méga-giga-supra blindé niveau codes kikoulol.

Il y à un moment ou il faut arrêter. Il y à un autre moment ou il ne faut plus envisager la programmation comme "je suis le maître du monde, j'écris, ça s’exécute" mais comme "J'ai un problème, j'ai plusieurs solutions, j'ai des contraintes, je fais un choix stratégique".

D'accord, pour écrire trois lignes de codes c'est un peu fort mais ça se vérifie dans la vie de tous les jours, on prend une décision qui va nous emmener sur une voie dont on prend connaissance à l'avance d'un certain nombre de contraintes auxquelles ont va être confronté.

La base d'un programme, c'est quand même la réflexion. Le gars il nous sort un truc sans même avoir réfléchi deux minutes à son problème.

La programmation, c'est aussi de la RECHERCHE. Pas de bête application de beaux principes sans les comprendre.

Et cela s'applique au simple [Kevin] (désolé pour eux) qui veut faire un morpion qu'au programmeur qui veut refaire le monde.

Prenons un exemple :

Kevin fait un morpion. Il est content il à placé sur son formulaire 3 picturebox et change les images via du code. Chaque fois qu'il clique, il à une routine qui vient s’exécuter pour connaître le meilleur coup que le joueur peut faire ensuite. Puis l'ordinateur vient placer son signe là ou le joueur à le meilleur coup. Et ? puis voila, Kevin est content, il à créé un morpion.

Maintenant, tu as Homer qui veut programmer un morpion. Il crée pour cela une classe Grid qui contient les informations concernant sa grille de cellules (leur nombre par exemple). Il crée ensuite une classe Cell qui contient les informations (cliquable, apparence, état par exemple). Ensuite, il crée une classe morpionCell qui hérite de Case et qui défini le comportement d'une cellule pour jouer au morpion.

Puis il ajoute via une routine des morpionCell à Grid :

Dim tempGrid as new Grid
tempGrid.addrange(new morpioncell,8) //index base 0

> Résultat, il obtient une grille paramétrable à souhait plutôt qu'un nombre limité de picturebox.

Puis, comme Homer est en forme, il rajoute des évènements à Cell : Clicked.
Puis, comme Homer est (toujours) en forme, il rajoute à Grid : CellClicked.

Puis, comme Homer est un bon programmeur, il à terminé 80% de son programme. Le reste, il le fera dans son contrôle Grid pour gérer les interventions des joueurs via l'évènement CellClicked.

Puis (enfin), comme Homer est un très bon programmeur, son ami Moe lui demande de lui faire un jeu de dames. Homer à déjà codé 80% de son jeu de dames, et il ne lui reste plus que 100 lignes pour terminer son projet.

CQFD: Homer est un bien meilleur programmeur que Kevin car il à réfléchi à son projet, déterminer quelles était la meilleure solution, en l’occurrence : Un support de jeu adaptable et réutilisable.

J'en rajoute une couche mais ton code (qui est en réalité plus un snippets qu'un code, bien qu'un snippets soit réutilisable, ton code non) ne permet ni une réutilisation, ni une évolution sans réécriture totale.

Ce que Homer vient de te démontrer, ça s'appel de la Programmation Orientée Objet (POO).

Renseigne toi l'ami.
graveen Messages postés 2 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 29 mars 2011
29 mars 2011 à 14:03
Les gars, on ne tire pas sur l'ambulance...

Dès la première ligne du texte, ou la HashTable, tu sais que c'est un vrai débutant. Genre 13/15 ans. L'age où tu cherches le résultat, avant de sans doute te pencher sur un bouquin. Le code, rien à dire, de débutant. Mais il est soumis, discuté sur CS.

BigBoss9, tu as raison, jusqu'à la dernière ligne. Mais relis justement cette dernière ligne: tu parles de l'adéquation entre les moyens et le résultat. Ca décourage 95% des gens ce genre de ruse, et c'est certainement ce qu'il cherche.

Aprés on peut discuter longtemps et technique, mais c'est aussi sympa de bien accueillir les nouveaux :)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
29 mars 2011 à 12:47
Je me pensais un peu dur sur cette seconde source de l'auteur...

BIGBOSS9 est franchement cinglant. Dans le vrai. Mais cinglant.

La seule chose a en retenir est bien que cela permet a chacun d’accéder a ses propres données, mais niveau protection, c'est très léger.
cs_bigboss9 Messages postés 162 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 20 juillet 2013
29 mars 2011 à 11:31
Haha ... Protéger une application en .Net ... C'est comme faire un OS avec un langage de haut niveau ... C'est impensable (rien n'est impossible).

Plusieurs raisons :

- L'écriture du mot de passe dans le code est stupide : La décomplilation permet de tout voir.
- L'écriture du mot de passe dans le code est stupide : Même si tu obscurcis ton code, ca reste encore visible.
- Le stockage dans une base de donnée est stupide : Cela reste facilement accessible pour qui veut se casser la tête.
- Le stockage à distance du mot de passe est stupide : On peut sniffer les packets envoyés/reçus sur le réseau.
- Le recours à une classe tiers est stupide : Tout ce qui est écris en .Net peut être désassemblé, non seulement lorsque les fichiers sont présents sur le disque mais également quand les assemblies sont chargés en mémoire.
- Stocker un hash du mot de passe et comparer le texte entré et son équivalent en md5 (par exemple) est stupide : Tout les évènements d'une application peuvent être écoutés de l'exterieur. Le texte, puisqu'il est entré dans une textbox est récupérable.

Bien sûr, tu pourrais écrire toi même un composant mais celui-ci, de la même manière que les autres serait accessible.

La protection, c'est compliqué et celane se résume pas aux moyens mis en oeuvre pour protéger quelque chose (les studios de développement de jeux en ont fait les frais récemment). Elle demande de savoir déterminer si ce que l'on veut protéger doit réellement l'être ? (secret médical, d'état, etc) ainsi que les probabilités que ce que tu veux protéger soit découvert, sans protection mise en place.

Un site web est accessible à des millions de personnes. Il faut les identifier pour que chacun puisse accéder à SES PROPRES données. Crois-tu que le mot de passe serve réellement à protéger quelque chose ?

Bref, la protection d'une application en .net est impensable ou très compliqué et cela dépasse de loin tes capacités, si elles se résument à tes sources postées ici.

Avant de chercher à protéger quelque chose, demande toi quels sont les efforts que tu vas fournir pour quels résultats. Ici, 39 lignes de codes, aucun résultat.

Désolé.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
29 mars 2011 à 06:50
this.Close();
c'est ça la protection ?

je veux dire, si tu souhaites ne pas nous montrer que tu sais jouer avec des HashTables, montres nous en plus.

montres nous comment doit être fait l'appel...
Comment réellement protéger l'application.
Tu aurais pu nous fournir une classe clé en main qui s'occupe de générer la Form, d'y attacher les controles, de valider la saisie et de renvoyer a l'appelant si oui ou non on peut aller plus loin...

En Gros :

If (IsGrantAccess(out AuthorizationLevel)) {
...
}

ici, tu nous indiques que le MDP ou l'ID est incorrect, dans deux messages distincts. C'est une bien mauvaise politique. en cas de BruteForce, l'attaquant saurait que son ID est valable...
Rejoignez-nous