Wachtwoordmanager

Zojuist heb ik een nogal groot beveiligingslek in de login van mijn weblog gefixt. Het bleek namelijk dat ik niet alleen succesvol werd ingelogd als ik het goede wachtwoord invoerde, maar ook als ik het met een verkeerd wachtwoord probeerde.

In mijn code stond: Als het wachtwoord niet gelijk is aan 'xxx' en de gebruiker niet gelijk is aan 'seblog.nl', geef dan een error. Op het eerste gezicht klinkt dat redelijk valide, maar het is dus foutief. Het had ‘of’ moeten zijn: Als niet-wachtwoord OF niet-gebruiker, dan error. Logica. En over het hoofd gezien.

De les hieruit: altijd testen of dingen die zouden moeten werken werken, maar ook altijd testen of dingen die niet zouden moeten werken niet werken.

En ik al die tijd maar moeilijk doen om mijn veel te lange wachtwoord in mijn wachtwoordmanager op te zoeken.


Edit: ik heb het nu allemaal wat fancyer aangepakt. $_POST['pass'] !== 'xxx' is gevoelig voor Timing Attacks, en als het goed is ben ik dat nu niet meer.