TitkosÃtott tárolás
SSL/SSH az ügyfél és kiszolgáló közt mozgó adatokat védi, és nem védi az adatbázisban tárolt megmaradó adatokat. Az SSL - kapcsolati protokoll.
Mihelyst a támadó közvetlen hozzáférést szerzett az adatbázishoz - megkerülve a webszervert -, a tárolt adatok védtelenné váltak, és visszaélhet velük, ha csak maga az adatbázis nem védi valahogy azokat. Az adatok titkosÃtása kellÅ‘képp enyhÃti ezt a veszélyt, de jelenleg nagyon kevés adatbázis kezelÅ‘ támogatja a titkosÃtást.
Ez a legkönnyebben saját titkosÃtó csomag Ãrásával oldható meg, amelyet utána a PHP szkriptbÅ‘l el lehet érni. Ebben az esetben a PHP segÃtséget nyújthat néhány kiterjesztésével, mint például az Mcrypt vagy az Mhash, amelyek nagyon sokféle titkosÃtó algoritmust fednek le. A szkript az adatbázisban való tárolás elÅ‘tt titkosÃtja a tárolni kÃvánt adatot, majd visszakereséskor visszafejti azokat. Nézd meg a hivatkozott fejezeteket további példákért, hogyan kell a titkosÃtást végrehajtani.
Olyan teljesen rejtett adatok esetén, amelyeknek nyÃlt ábrázolásukra nincs szükség, mert nem lesznek kiÃratva, a hashelés alkalmazása is meggondolandó. A hashelés jól ismert példája az, hogy a jelszavak helyett, azoknak csak MD5 hash értékét tárolják az adatbzisban. Lásd még: crypt() és md5()!
Example#1 Hashelt jelszó mező használata
<?php
// jelszó hash értékének tárolása
$query = sprintf("INSERT INTO users(name,pwd) VALUES('%s','%s');",
pg_escape_string($username), md5($password));
$result = pg_query($connection, $query);
// lekérdezés, vajon a felhasználó a helyes jelszót adta-e meg
$query = sprintf("SELECT 1 FROM users WHERE name='%s' AND pwd='%s';",
ph_escape_string($username), md5($password));
$result = pg_query($connection, $query);
if (pg_num_rows($result) > 0) {
echo "Üdvözöllek, $username!";
} else {
echo "$username hitelesÃtése nem sikerült.";
}
?>