Password Hashing
Hvad er hashing?
Hashing kort fortalt genererer en værdi fra en streng af tekst ved hjælp af en matematisk funktion.
Hashing er en måde at både skjule og verificere data, og bruges ofte i login-system til at gemme brugerens password, men bruges også ved f.eks. online-betalinger med Dankort på nettet for at verificere en transaktion.
Hashing i PHP 5.5 og nyere samt PHP 7
PHP har i version 5.5 (og nyere) lanceret en ny måde at hashe passwords på. Mange udviklere bruger stadig de gamle og usikre algoritmer som bl.a. MD5 og SHA1 - og nogle bruger endvidere ikke en salt når de hasher passwords. Det betyder kort fortalt at de data man forsøger at gemme "skjult", nemt kan "findes" igen.
Idéen med at hashe et password, er at man som website-ejer ikke ønsker at gemme brugernes passwords i ren tekst. Det ville være nemt nok blot at gemme passwords som de er, i ren tekst, men samtidig udgør det også en stor sikkerhedsrisiko, hvis ens database skulle komme i hænderne på de forkerte personer.
Den nye password_hash() funktion i PHP 5.5 og nyere bruger den nuværende best-practice måde at hashe på (bcrypt), men formår stadig at holde det på et simpelt niveau. Elementer som random salt, verificerings-data mv. klarer PHP automatisk for dig.
De nye hashing-funktioner i PHP 5.5 og nyere består af følgende:
password_hash() – bruges til at hashe et password
password_verify() – bruges til at verificere et password op imod en hash
password_needs_rehash() – bruges når et password skal rehashes
password_get_info() – returnere navne på hashing algoritmen samt de forskellige optioner der blev brugt ifm. hashing af password
I denne video gennemgår vi password_hash i PHP 5.5 - god fornøjelse