Softwaredesign og -udvikling

Hvordan håndteres adgangskoder i en webapplikation?

Alle adgangskoder bør opbevares krypterede i brugerdatabasen. Benyt et lokalt seed på minimum 64-bit. Kryptèr eller hash adgangskoden plus seed flere gange med kendte, peer-reviewed algoritmer. Derved gøres det meget dyrt at forsøge brute-force angreb på databasen, hvis en angriber skulle lykkedes at få fat i en kopi.

Når brugere ønsker at registere sig i en webapplikation, giv dem ikke muligheden for at indtaste deres egen adgangskode. De færreste brugere kan finde ud af at vælge en passende kode, og de som kan, vil alligevel helst være fri. Send i stedet en tilfældig adgangskode på 15-40 tegn i email. Adgangskoden bør indeholde store bogstaver, små bogstaver, tal og adskellige specialtegn: .!"@#£¤$%&/()={[]}?+-|*.

Brugeren skal derved copy & paste adgangskoden ind i sin webbrowser og lade denne huske koden til næste gang. Således er koden ikke umiddelbart tilgængeligt hvis brugeren lokkes ind på et falsk site. Det betyder dog også, at brugeren skal printe og medbringe koden hvis hun ønsker at logge ind i din applikation fra fremmede computere.

Hvis brugeren har mistet sin adgangskode, sendes enten en ny kode eller et unikt link til brugerens oplyste email adresse. For at forhindre uvedkommende i at udføre et denial-of-service angreb mod en bruger, skal den gamle adgangskode fortsat virke indtil der er logget ind med den nye og/eller kode-reset er blevet bekræftet via det mailede link.

Undlad at gøre brug af de såkaldte security questions hvor brugeren skal oplyse personlige data som enhver kan finde frem til (f.eks. moderens pigenavn, navn på kæledyr, etc). Det er bare endnu en adgangskode, dog med alle de dårlige egenskaber vi her forsøger at undgå.

Selvom email typisk sendes i klar tekst, er det i de færreste tilfælde at netværksaflytning er den primære bekymring.