gebruikersaccount recovering
Ik heb een gebruikerssysteem op een vrijwilligerswebsite. De gebruikers kunnen door 2 personen worden aangemaakt (de website admin en de coördinator vrijwilligersmanagement). Er word automatisch een random wachtwoord gegenereerd bij het aanmaken van nieuwe gebruikersaccounts. Deze word per e-mail aan de vrijwilliger gestuurd (die bij de eerste inlog verplicht is deze te wijzigen voordat deze ook maar iets kan doen binnen de vrijwilligerswebsite).
Nu gaat het ongetwijfeld gebeuren dat vrijwilligers hun wachtwoord vergeten. Wat is de beste manier om een gebruiker hun wachtwoord te laten resetten?
Zelf denk ik dat de volgende manier in deze situatie een goede oplossing is:
De gebruiker gaat naar het inlogscherm en drukt op "wachtwoord vergeten." Vervolgens moet deze de zijn e-mail adres opgeven (welke bekend is in het systeem) en aangeven bij welk onderdeel deze persoon vrijwilliger is (er zijn ongeveer 10 onderdelen waar iemand vrijwilliger kan zijn).
Er word dan een token gegenereerd van 20 tekens (combinatie van kleine letters, hoofdletters en leestekens) die per e-mail aan de vrijwilliger verzonden word. Er word tevens bijgehouden wanneer deze token gegenereerd is. Na 3 uur vervalt de token en moet er een nieuwe token aangevraagd worden.
In de e-mail staat een link die de gebruiker kan gebruiken om het wachtwoord te veranderen. Daar moet de token worden opgegeven en weer het e-mail adres en welk onderdeel de gebruiker vrijwilliger is. Alleen als die 3 punten overeen komen kan de vrijwilliger een nieuw wachtwoord opgeven.
Concreet zijn mijn vragen:
1. Wat is jullie mening over de veiligheid van deze werkwijze?
2. Is er een betere manier, rekening houdend met het feit dat dat de helft van de vrijwilligers boven de 70 zijn en al blij zijn te weten hoe een computer aan moet en hoe zij naar een website kunnen surfen.
Ook is mijn sterke advies om dit geheel achter HTTPS te plaatsen.
2) Ga eerst maar eens analyseren of het echt nodig is. Je kan altijd een helpdesk-telefoonnummer of contact-mailadres bij de 'wachtwoord vergeten'-pagina plaatsen. Als je duidelijke uitleg geeft, dan lijkt mij dat ook ouderen de procedures zullen snappen.
Ik zou de token dan wel via GET meegeven aan de URL, zodat de gebruiker direct op de link kan klikken en enkel een password hoeft in te vullen, waarbij de token al ingevuld is. Na afloop maak je de token onbruikbaar.
Ik heb wel eens gemerkt dat Hotmail URL's vooraf "controleert", door ze alvast even te bezoeken. Als je dus je token na 1 bezoek onbruikbaar maakt kan een Hotmail gebruiker d'r zelf niks meer mee. Enerzijds snap ik het: een GET hoort geen statuswijzing door te geven, dus de link moet de volgende keer gewoon precies hetzelfde werken, maar ik vond het toen wel vrij bezopen (duurde ook even voordat ik 'm door had). Geen idee of ze dat nog steeds doen, maar is dus misschien iets om te controleren (wie weet doen andere webmail providers dat ook, anti-virus, enz).
Het lijkt mij niet erg handig om het token -met beperkte geldigheid- pas te invalideren als de wachtwoordgegevens zijn gewijzigd maar als je een of meer extra controlevragen toevoegt om wat extra zekerheid te verkrijgen over de identiteit van de aanvrager dan is dat mooi meegenomen.
Er is altijd een tradeoff tussen veiligheid en gebruikersgemak. Het hangt van de applicatie en het toepassingsgebied af wat als "veilig genoeg" bestempeld kan worden. Ook zou je je af kunnen vragen hoe interessant het kan zijn om een organisatie te infiltreren, vormt deze site een
En ja, HTTPS is natuurlijk ook handig. Vooral als je persoonsgegevens verwerkt. Volgens mij is dat met het in werking treden van de AVG (Algemene Verordening Gegevensbescherming) vanaf 25 mei 2018 dan ook (officieel) verplicht.
Gewijzigd op 13/05/2018 12:14:34 door Thomas van den Heuvel
Alles zit al achter SSL.
@Rob Doetmaarwat: De token word na 1 gebruik ongeldig gemaakt. Met gebruik bedoel ik dat er daadwerkelijk een nieuw wachtwoord aangemaakt is. Dus niet dat de pagina voor het wijzigen van het wachtwoord geopend is.