⊗ppPmAuRHS 424 of 447 menu

Tilsetning av salt i registrering

Så, du vet allerede at hashing via md5 er en irreversibel prosess og en hacker som får tilgang til hashen, ikke vil kunne få frem passordet fra denne hashen.

Egentlig er ikke denne påstanden helt riktig - for tiden har onde hackere satt sammen biblioteker med hasher av populære og mindre populære passord og hvem som helst kan knekke passordet, bare ved å søke etter hashen på Google.

Det gjelder tilstrekkelig enkle, populære passord.

Søk for eksempel etter hashen 827ccb0eea8a706c4c34a16891f84e7b og umiddelbart i søkeresultatene vil du se at det er passordet '12345'.

Hasher av tilstrekkelig komplekse passord kan ikke knekkes på denne måten (prøv selv).

Du kan spørre, hva er da problemet - la oss alle registrere oss med komplekse passord. Det er imidlertid et problem - de fleste brukere tenker ikke på sikkerheten til sine data og kan oppgi ganske enkle passord.

Ved registrering kan vi tvinge dem til å finne på lengre passord, ved for eksempel å begrense minimum antall tegn til 6 eller 8, men likevel vil det dukke opp passord som '123456' eller '12345678'.

Man kan selvfølgelig finne på en smartere algoritme for å sjekke passordets kompleksitet, men det finnes en annen løsning.

Kjernen i denne løsningen er dette: passord må salte. Salt er en spesiell tilfeldig streng, som vil bli lagt til passordet ved registrering og hashen vil da bli beregnet ikke fra det vanlige passordet, men fra strengen salt+passord, altså fra det salte passordet.

Det vil si at ved registrering vil du gjøre noe som dette:

<?php $salt = '1sJg3hfdf'; // salt - en kompleks tilfeldig streng $password = md5($salt . $_POST['password']); // konverterer passordet til en saltet hash ?>

Samtidig vil saltet være forskjellig for hver bruker, det må genereres tilfeldig ved registreringstidspunktet.

Her er en ferdig funksjon som gjør dette:

<?php function generateSalt() { $salt = ''; $saltLength = 8; // lengden på saltet for($i = 0; $i < $saltLength; $i++) { $salt .= chr(mt_rand(33, 126)); // tegn fra ASCII-tabellen } return $salt; } ?>

Med denne funksjonen kan vi omskrive koden vår slik:

<?php $salt = generateSalt(); // salt $password = md5($salt . $_POST['password']); // saltet passord ?>

Jeg gjentar igjen, at dette var endringer ved registrering - i databasen lagrer vi ikke bare hashen av passordet, men hashen av det salte passordet.

Dette er ikke alt: i tabellen med brukere, i tillegg til feltene login og password, må vi lage et felt til salt, der vi vil lagre saltet til hver bruker.

Implementer registreringen med saltet passord som beskrevet ovenfor.

Norsk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruker informasjonskapsler for nettstedets funksjonalitet, analyse og personalisering. Behandling av data foregår i henhold til Personvernerklæringen.
godta alle tilpass avvis