|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Expert Confirmé Sénior
![]() ![]() |
Aujourd'hui, je développais une application spring (ouais ouais, je sais), plus particulièrement, je configurais la sécurité et le hashage des mots de passe.
Je me loggue + pas à pas: les hash sont les mêmes, et pourtant je suis jeté. Bizarre me dis-je, j'ai du rater qqch. Je réessaie et là: plus de hash, le hash stocké de l'utilisateur a disparu de la mémoire (je précise que c'est par rapport à ce hash qu'on vérifie ce que l'utilisateur a entré). Je fouille et vla ti pas que je trouve le coupable dans spring security: Code java :
-> Logique buisness / effet de bord dans une Exception (alors que cette logique devrais se trouver dans le catch correspondant) -> logique buisness dans une constructeur (autant faire les choses en beautés). Oui, vous avez bien lu, si l'utilisateur tappe un mauvais mot de passe, on efface tout ce qu'on a de lui en mémoire. Et tant pis si on stockait les données uniquement en mémoire ![]() On rajoute à ça: - comportement non documenté - Passage d'un "Object" très typé - Appel d'un constructeur déprécié Notez qu'on est bien conscient là qu'on est occupé d'effacer un password du store puisque l'appel est Code java :
Notez aussi le flag ambigu "includeDetailsObject" qui, à true, a in fine l'effet de supprimer des détails
__________________
⥀⥁ Чиз faq java, cours java, javadoc. Pensez à et ![]() Laisse entrer le jour après une nuit sombre. Si tu es toujours là, tu n'es pas faite pour mourir. |
||||
|
|
20
|
|
|
#2 |
|
Expert Confirmé
![]() Pierre Ingénieur développement logiciels Inscription : juin 2007 Messages : 1 207 ![]() |
Adorable, en effet.
__________________
Mes principes de bases du codeur qui veut pouvoir dormir:
|
|
00
|
|
|
#3 |
|
Expert Confirmé Sénior
![]() |
Je suis d'accord sur le fait que ça ne devrait pas se trouver dans le constructeur, mais d'un autre côté je trouve normal de supprimer les credentials le plus tôt possible (logguer un mauvais mot de passe peut donner des informations sur le vrai mdp s'il y a eu typo, etc.).
En fait, le problème n'est pas tant qu'on efface les credentials, mais qu'on le fasse sur l'original (effet de bord). La chose à faire serait de cloner le extraInformation et filtrer la copie.
__________________
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant. "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?" Apparently everyone. -- Raymond Chen. Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen. |
|
|
00
|
|
|
#4 | |
|
Expert Confirmé Sénior
![]() ![]() |
Citation:
La chose propre aurait été de prendre un type bien précis, d'extraire les informations voulue dans le constructeur et de ne stocker que ces informations Bref, rien de ce qui a été fait
__________________
⥀⥁ Чиз faq java, cours java, javadoc. Pensez à et ![]() Laisse entrer le jour après une nuit sombre. Si tu es toujours là, tu n'es pas faite pour mourir. |
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com