Goeiemiddag,
Ik heb hier een relatief kleine struts-applicatie ter beschikking gekregen om wat dingen op uit te testen. De persoon die deze applicatie geschreven heeft, zet de password in plain text in de database (MySql). Dat probeer ik nu te verhelpen door ze te hashen. Het wegschrijven van gehashte passes naar de database is zonder problemen gelukt. Maar de op het loginformulier ingevulde passes hashen en die vergelijken met die in de database, daar ben ik reeds eventjes mijn hoofd over aan het breken. De login-procedure gaat via form-based authentication m.b.v. j_security_check. De manier waarop j_security_check de waarden precies vergelijkt met die in de database vind ik nogal vaag, ik ben nog maar een kleine maand bezig met j2ee. Ik vind hier in deze applicatie enkel een LoginForm.java met j_username en j_password met getters en setters (een hash van de getter levert niks op). Verder geen referenties naar j_username en j_password. Dus volgens mij staat de applicatie server in voor de authenticatie, gaat alles automatisch door wat in de realm en de web.xml staat en is het dus onmogelijk de waarden van j_passsword te manipuleren. Ik hoop van harte dat ik fout ben met deze stelling.
Bestaat er dus een manier om j_password te onderscheppen, te hashen en dan te vergelijken met die in de database of moet men hiervoor meteen JAAS gebruiken?
Ik heb hier een relatief kleine struts-applicatie ter beschikking gekregen om wat dingen op uit te testen. De persoon die deze applicatie geschreven heeft, zet de password in plain text in de database (MySql). Dat probeer ik nu te verhelpen door ze te hashen. Het wegschrijven van gehashte passes naar de database is zonder problemen gelukt. Maar de op het loginformulier ingevulde passes hashen en die vergelijken met die in de database, daar ben ik reeds eventjes mijn hoofd over aan het breken. De login-procedure gaat via form-based authentication m.b.v. j_security_check. De manier waarop j_security_check de waarden precies vergelijkt met die in de database vind ik nogal vaag, ik ben nog maar een kleine maand bezig met j2ee. Ik vind hier in deze applicatie enkel een LoginForm.java met j_username en j_password met getters en setters (een hash van de getter levert niks op). Verder geen referenties naar j_username en j_password. Dus volgens mij staat de applicatie server in voor de authenticatie, gaat alles automatisch door wat in de realm en de web.xml staat en is het dus onmogelijk de waarden van j_passsword te manipuleren. Ik hoop van harte dat ik fout ben met deze stelling.
Bestaat er dus een manier om j_password te onderscheppen, te hashen en dan te vergelijken met die in de database of moet men hiervoor meteen JAAS gebruiken?