Jelszó titkosítás

Ha el akarsz tárolni egy jelszót, hogy később azonosítani tudj vele egy felhasználót, semmiképpen nem szabad sima szövegként eltárolnod, mivel így ha feltörik az oldaladat, mindenkinek kikerülnek a jelszavai. Ehelyett olyan titkosító algoritmust szokás használni, ami nem visszafejthető módon titkosítja a szavakat. Ez azt jelenti, hogy egy adott szót mindig ugyanúgy titkosít, de nincs lehetőség a titkosított adatok alapján visszakapni az eredeti jelszót. Honnan fogod tudni, hogy a felhasználó által beírt jelszó jó? Onnan, hogy ismét titkosítod, és megnézed, hogy egyezik-e a titkosított változata az elmentett jelszó titkosított változatával. Ilyen algoritmus például az SHA256.

Sajnos ez sem teljesen biztonságos, mivel a legtöbb ilyen titkosító algoritmushoz vannak már kész táblázatok, amikben benne van, hogy milyen szavakat mire titkosít az algoritmus. Ha valaki feltöri az oldalakat, akkor elég összehasonlítania az elmentett titkosított jelszavaidat egy ilyen táblázat elemeivel, és máris megvannak a jelszavaid (legalábbis akkor, ha nem túl különlegesek). Erre jó a "sózás" (salt), amikor egy véletlenszerű szöveggel megbolondítjuk az eltárolt jelszót. Ezt a véletlenszerű szöveget a titkosított jelszóval együtt szintén eltároljuk, mert szükség lesz rá, amikor valaki be akar lépni (akkor ugyanezzel a szöveggel "bolondítjuk meg" a felhasználó által beírt jelszót, és megnézzük, hogy egyezik-e az elmentett titkosított jelszóval).

Ha a $pass változóban van a felhasználó jelszava:

$salt = base64_encode(mcrypt_create_iv(24, MCRYPT_DEV_URANDOM)); //véletlen szöveg
$hash = hash_hmac("sha256", $salt, $pass); //titkosítás

A fenti két változót a felhasználónév mellett el kell menteni az adatbázisodba. Ezután belépésnél így tudod ellenőrizni az egyezést:

if ((strcmp(hash_hmac("sha256", $salt, $userpass), $pass) === 0) && (strcmp($usernev, $user) == 0)) {
//sikeres belépés
}

A $salt, a $pass és a $user az adatbázisból van, a $userpass és az $usernev a felhasználó által megadott jelszó illetve felhasználónév. Az strcmp-t a szövegek összehasonlításához használjuk.

Evoid2020. ápr.

Hiba jelentéseHiba jelentése

Kapcsolódó trükkök

Összes trükk

Hozzászólások

Hozzászólás írásához jelentkezz be vagy lépj be Facebookkal!