⊗ppPmAuRHS 424 of 447 menu

Dodajanje soli v registracijo

Torej, že veste, da je zgoščevanje z md5 - nepovraten proces in heker, ki dobi dostop do zgoščene vrednosti, ne bo mogel pridobiti gesla iz te zgoščene vrednosti.

Pravzaprav ta trditev ni povsem pravilna - trenutno so zlobni hekerji sestavili knjižnice zgoščenih vrednosti priljubljenih in manj priljubljenih gesel in vsak lahko ugane geslo, tako da preprosto pogugla njegovo zgoščeno vrednost.

Gre za dokaj preprosta, priljubljena gesla.

Poguglajte na primer zgoščeno vrednost 827ccb0eea8a706c4c34a16891f84e7b in takoj boste v iskanju Googla videli, da je to geslo '12345'.

Zgoščene vrednosti dovolj zapletenih gesel na ta način ni mogoče razbiti (poskusite).

Lahko se vprašate, v čem je potem problem - recimo, vsi se bomo registrirali s zapletenimi gesli. Vendar obstaja problem - večina uporabnikov ne razmišlja o varnosti svojih podatkov in lahko vnesejo precej preprosta gesla.

Ob registraciji lahko zahtevamo, da si izmislijo dolžja gesla, tako da na primer omejimo minimalno število znakov na 6 ali 8, vendar se bodo kljub temu pojavljala gesla, kot so '123456' ali '12345678'.

Seveda lahko izmislimo pametnejši algoritem za preverjanje zahtevnosti gesla, vendar obstaja druga rešitev.

Bistvo te rešitve je: gesla je treba posoliti. Sol - to je posebna naključna niza, ki se bo dodala geslu ob registraciji in zgoščena vrednost se ne bo več izračunala iz preprostega gesla, temveč iz niza sol+geslo, torej iz soljenega gesla.

To pomeni, da boste ob registraciji naredili najbrž nekaj takega:

<?php $salt = '1sJg3hfdf'; // sol - zapletena naključna niza $password = md5($salt . $_POST['password']); // pretvorimo geslo v soljeno zgoščeno vrednost ?>

Poleg tega bo sol različna za vsakega uporabnika, generirati jo je treba naključno v času registracije.

Tukaj je pripravljena funkcija, ki bo to naredila:

<?php function generateSalt() { $salt = ''; $saltLength = 8; // dolžina soli for($i = 0; $i < $saltLength; $i++) { $salt .= chr(mt_rand(33, 126)); // znak iz ASCII-tabele } return $salt; } ?>

S to funkcijo lahko našo kodo prepišemo takole:

<?php $salt = generateSalt(); // sol $password = md5($salt . $_POST['password']); // soljeno geslo ?>

Še enkrat ponavljam, da so bile to spremembe ob registraciji - v bazo podatkov shranimo ne le zgoščeno vrednost gesla, temveč zgoščeno vrednost soljenega gesla.

To še ni vse: v tabeli z uporabniki poleg polja login in password je treba narediti še polje salt, v katerem bomo shranjevali sol vsakega uporabnika.

Implementirajte zgoraj opisano registracijo s soljenim geslom.

Slovenščina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni