Moderator |
|
Hm, hoe kun je ooit garanderen dat het password uniek is? Dit wordt niet afgedwongen lijkt mij? Daarnaast vermoed ik dat de hashes van passwords worden opgeslagen. Je kunt twee compleet verschillende wachtwoorden hebben, maar de hashes kunnen dan nog steeds hetzelfde zijn. Mede door de aard van hashfuncties is deze kans (zeer) klein, maar nog steeds aanwezig.
EDIT: het gevolg hiervan is dus dat, afhankelijk van de volgorde waarin je de users doorloopt, de kans bestaat dat user X als user Y wordt ingelogd indien de (hashes van de) wachtwoorden hetzelfde zijn. Dit lijkt mij absoluut niet de bedoeling.
Als het erom gaat dat iemand alleen maar zijn wachtwoord in hoeft te vullen, maak dan een functionaliteit bij waarbij de username wordt onthouden (via een cookie - deze gebruik je dan om (alle daaropvolgende keren dat je wilt inloggen) de username automatisch in te vullen in het loginformulier), dit is een vrij normale gang van zaken voor login-functionaliteit?
Om de bovenstaande reden (je kunt niet garanderen dat (hashes van) wachtwoorden uniek zijn) zou ik het persoonlijk niet op jouw manier (loopen door userdata) oplossen. Ik zou dus gaan voor de oplossing die ik voorstel: onthoud de username. Hiermee bereik je hetzelfde en dit lijkt mij (onder andere uit oogpunt van security en performance) beter dan de bovenstaande "hack".
EDIT2: Heb je voor de gein wel eens een query uitgevoerd op je usertabel om te zien of er duplicaten in je hashes zitten? Hoe vaak voeren mensen "welkom" of iets dergelijks in als wachtwoord?
SELECT wachtwoord_kolom, COUNT(wachtwoord_kolom) AS aantal
FROM gebruiker_tabel
GROUP BY wachtwoord_kolom
HAVING aantal > 1
SELECT wachtwoord_kolom, COUNT(wachtwoord_kolom) AS aantal FROM gebruiker_tabel GROUP BY wachtwoord_kolom HAVING aantal > 1
Als de bovenstaande query resultaat oplevert, heb je sowieso duplicaten. Dat is op zich niet erg (ik ken geen applicaties met een uniek wachtwoord constraint) maar het illustreert wel wat er zou kunnen gebeuren als je jouw oplossing toepast. Indien de query resultaten oplevert houdt dit in dat er een reële kans is dat gebruikers als de verkeerde persoon worden ingelogd. |