⊗ppPmAuRHS 424 of 447 menu

Att lägga till salt i registreringen

Så, du vet redan att hashning via md5 är en irreversibel process och en hackare som får tillgång till hashen inte kommer att kunna få lösenordet från denna hash.

Egentligen är detta påstående inte helt sant - för närvarande har elaka hackare sammanställt bibliotek med hashar av populära och mindre populära lösenord och vilken dumbom som helst kan knäcka ett lösenord genom att helt enkelt googla dess hash.

Det handlar om tillräckligt enkla, populära lösenord.

Googla till exempel hashen 827ccb0eea8a706c4c34a16891f84e7b och omedelbart i sökresultaten kommer du att se att det är lösenordet '12345'.

Hashar av tillräckligt komplexa lösenord kan inte knäckas på detta sätt (försök).

Du kanske frågar, vad är problemet då - låt oss alla registrera oss med komplexa lösenord. Det finns dock ett problem - de flesta användare tänker inte på säkerheten för sina data och kan ange ganska enkla lösenord.

Vi kan vid registrering tvinga dem att komma på längre lösenord genom att begränsa, till exempel, minsta antalet tecken till 6 eller 8, men ändå kommer lösenord som '123456' eller '12345678' att dyka upp.

Man kan förstås komma på en smartare algoritm för att kontrollera lösenordets komplexitet, men det finns en annan lösning.

Kärnan i denna lösning är: lösenord måste saltas. Salt är en speciell slumpmässig sträng som kommer att läggas till lösenordet vid registrering och hashen kommer att beräknas inte från det vanliga lösenordet, utan från strängen salt+lösenord, det vill säga från det saltade lösenordet.

Det vill säga vid registrering kommer du att göra något i stil med detta:

<?php $salt = '1sJg3hfdf'; // salt - en komplex slumpmässig sträng $password = md5($salt . $_POST['password']); // omvandlar lösenordet till en saltad hash ?>

Samtidigt kommer saltet att vara olika för varje användare, det måste genereras slumpmässigt vid registreringstillfället.

Här är en färdig funktion som gör detta:

<?php function generateSalt() { $salt = ''; $saltLength = 8; // saltets längd for($i = 0; $i < $saltLength; $i++) { $salt .= chr(mt_rand(33, 126)); // ett tecken från ASCII-tabellen } return $salt; } ?>

Med denna funktion kan vi skriva om vår kod så här:

<?php $salt = generateSalt(); // salt $password = md5($salt . $_POST['password']); // saltat lösenord ?>

Jag upprepar, att detta var ändringar vid registrering - i databasen sparar vi inte bara hashen av lösenordet, utan hashen av det saltade lösenordet.

Det är inte allt: i tabellen med användare förutom fälten login och password behöver vi skapa ytterligare ett fält salt, där vi kommer att lagra varje användares salt.

Implementera registrering med saltat lösenord som beskrivits ovan.

Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa