⊗ppPmAuRHS 424 of 447 menu

Tilføjelse af salt til registrering

Så du ved allerede, at hashing via md5 er en irreversibel proces, og en hacker der får adgang til hashen, ikke vil være i stand til at få adgangskoden ud fra denne hash.

Faktisk er denne påstand ikke helt sand - i dag har onde hackere samlet biblioteker af hashes fra populære og mindre populære adgangskoder og enhver tåbe kan knække adgangskoden ved simpelthen at søge efter dens hash.

Det drejer sig om tilstrækkeligt simple, populære adgangskoder.

Søg for eksempel efter hashen 827ccb0eea8a706c4c34a16891f84e7b og du vil straks i søgeresultaterne se, at det er adgangskoden '12345'.

Hashes af tilstrækkeligt komplekse adgangskoder kan på denne måde ikke knækkes (prøv selv).

Du kan spørge, hvad problemet så er - lad os alle registrere os med komplekse adgangskoder. Der er dog et problem - de fleste brugere tænker ikke over sikkerheden af deres data og kan indtaste tilstrækkeligt simple adgangskoder.

Vi kan ved registrering tvinge dem til at finde på længere adgangskoder ved f.eks. at begrænse det minimale antal tegn til 6 eller 8, men alligevel vil der dukke adgangskoder op som '123456' eller '12345678'.

Man kan selvfølgelig finde på en smartere algoritme til at kontrollere adgangskodens kompleksitet, men der er en anden løsning.

Essensen af denne løsning er sådan: adgangskoder skal salte. Salt er en speciel tilfældig streng, der vil blive tilføjet til adgangskoden ved registrering, og hashen vil blive beregnet ikke fra den simple adgangskode, men fra strengen salt+adgangskode, dvs. fra den saltede adgangskode.

Det vil sige, at ved registrering vil du gøre noget i stil med dette:

<?php $salt = '1sJg3hfdf'; // salt - en kompleks tilfældig streng $password = md5($salt . $_POST['password']); // omdanner adgangskoden til en salted hash ?>

Saltet vil være forskelligt for hver bruger, det skal genereres tilfældigt øjeblikket for registrering.

Her er en færdig funktion, der gør dette:

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

Med denne funktion kan vi omskrive vores kode sådan her:

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

Jeg gentager: dette var ændringer ved registrering - i databasen gemmer vi ikke bare hashen af adgangskoden, men hashen af den saltede adgangskode.

Det er ikke alt: i bruger-tabellen foruden felterne login og password skal der også være et felt salt, hvor vi vil gemme hver brugers salt.

Implementer den ovenfor beskrevne registrering med saltet adgangskode.

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