⊗ppPmAuRHS 424 of 447 menu

Só hozzáadása a regisztrációhoz

Tehát, már tudod, hogy a md5 hash-elés visszafordíthatatlan folyamat, és egy hacker, aki hozzáfér a hash-hez, nem tudja visszanyerni belőle a jelszót.

Valójában ez az állítás nem teljesen igaz - jelenleg a rosszindulatú hackerek összeállítottak népszerű és kevésbé népszerű jelszavak hash könyvtárait és bárki képes kitalálni a jelszót, egyszerűen rákeresve a hash-ére.

Ez elég egyszerű, népszerű jelszavakra vonatkozik.

Keress rá például a 827ccb0eea8a706c4c34a16891f84e7b hash-re és azonnal a Google keresőben látni fogod, hogy ez a '12345' jelszó.

Az elég bonyolult jelszavak hash-eit ilyen módon nem lehet kitalálni (próbáld ki).

Kérdezheted, hogy akkor mi a probléma - mindannyian regisztráljunk bonyolult jelszavakkal. Van azonban egy probléma - a legtöbb felhasználó nem gondol adatai biztonságára és elég egyszerű jelszavakat használhat.

A regisztrációnál kényszeríthetjük őket, hogy hosszabb jelszavakat találjanak ki, például korlátozva a minimális karakter számot 6 vagy 8, de így is előfordulnak '123456' vagy '12345678' típusú jelszavak.

Lehetne persze, okosabb algoritmust kitalálni a jelszó bonyolultságának ellenőrzésére, de van más megoldás is.

Ennek a megoldásnak a lényege: a jelszavakat meg kell sózni. A só egy speciális véletlenszerű string, ami a regisztrációnál hozzáadódik a jelszóhoz, és a hash nem a sima jelszóról, hanem a só+jelszó stringről, azaz a sózott jelszóról számítódik ki.

Tehát a regisztrációnál valami ilyesmit kell csinálni:

<?php $salt = '1sJg3hfdf'; // só - bonyolult véletlenszerű string $password = md5($salt . $_POST['password']); // átalakítjuk a jelszót sózott hash-é ?>

Ebben az esetben a só minden felhasználó esetében más lesz, véletlenszerűen kell generálni a regisztráció pillanatában.

Itt egy kész függvény, amely ezt megteszi:

<?php function generateSalt() { $salt = ''; $saltLength = 8; // a só hossza for($i = 0; $i < $saltLength; $i++) { $salt .= chr(mt_rand(33, 126)); // karakter az ASCII-táblából } return $salt; } ?>

Ezzel a függvénnyel így írhatjuk át a kódunkat:

<?php $salt = generateSalt(); // só $password = md5($salt . $_POST['password']); // sózott jelszó ?>

Ismétlem, ezek a regisztrációnál történtek - az adatbázisban nem egyszerűen a jelszó hash-ét tároljuk, hanem a sózott jelszó hash-ét.

És ez még nem minden: a felhasználók táblájában a login és password mezők mellett kell egy salt mező is, amelyben minden felhasználó sóját tároljuk.

Valósítsa meg a fent leírt sózott jelszavas regisztrációt.

Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás