⊗ppPmAuRHS 424 of 447 menu

Dodavanje soli pri registraciji

Dakle, već znate da je heširanje preko md5 - nepovratan proces i haker koji dobije pristup hešu, neće moći da dobije lozinku na osnovu tog heša.

Zapravo ova tvrdnja nije sasvim tačna - trenutno zli hakeri su sastavili biblioteke heševa popularnih i manje popularnih lozinki i svaki budala može da provali lozinku, jednostavno pretražujući njen heš.

Reč je o dovoljno jednostavnim, popularnim lozinkama.

Pretražite, na primer, heš 827ccb0eea8a706c4c34a16891f84e7b i odmah u pretrazi Gugla videćete da je to lozinka '12345'.

Dovoljno složene lozinke se na ovaj način ne mogu provaliti (probajte).

Možete pitati, u čemu je onda problem - hajde svi da se registrujemo sa složenim lozinkama. Međutim, postoji problem - većina korisnika ne razmišlja o bezbednosti svojih podataka i mogu unositi dovoljno jednostavne lozinke.

Možemo pri registraciji da nateramo korisnike da smišljaju duže lozinke, ograničavajući, na primer, minimalni broj karaktera na 6 ili 8, međutim, i dalje će se pojavljivati lozinke poput '123456' ili '12345678'.

Možemo, naravno, smisliti pametniji algoritam provere složenosti lozinke, ali postoji drugo rešenje.

Suština tog rešenja je sledeća: lozinke treba posoliti. So - to je specijalni slučajni string, koji će se dodavati lozinki pri registraciji i heš će se računati ne od obične lozinke, već od stringa so+lozinka, to jest od slane lozinke.

To znači da ćete pri registraciji raditi nešto poput ovoga:

<?php $salt = '1sJg3hfdf'; // so - složeni slučajni string $password = md5($salt . $_POST['password']); // pretvaramo lozinku u slani heš ?>

Pritom će so biti različita za svakog korisnika, treba je generisati slučajno u momentu registracije.

Evo gotove funkcije koja će to uraditi:

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

Pomoću ove funkcije možemo prepisati naš kod ovako:

<?php $salt = generateSalt(); // so $password = md5($salt . $_POST['password']); // slana lozinka ?>

Još jednom da ponovim, ovo su bile izmene pri registraciji - u bazu podataka čuvamo ne samo heš lozinke, već heš slane lozinke.

To još nije sve: u tabeli sa korisnicima pored polja login i password treba napraviti još i polje salt, u kojem ćemo čuvati so svakog korisnika.

Realizujte gore opisanu registraciju sa slanom lozinkom.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij