Felhasználóink adatait általában egy táblában tároljuk, ez így rendben is van.
CREATE TABLE felhasznalo (
felhasznalo VARCHAR(20),
jelszo VARCHAR(128),
belephet CHAR(1) DEFAULT 'N',
...,
PRIMARY KEY (felhasznalo)
);
Ide rakosgatjuk a felhasználónk adatait, de egy csúnya hacker bácsi feltöri az adatbázisunk, mehet ki a sajnálkozó levél minden partnerünknek, nem csekély hitelvesztéssel.
Nagyon veszélyes akár még hozzáférni is a jelszavakhoz mi magunknak is, a felhasználók többsége ugyanezt használja pl. Facebook, vagy Google alatt is. Kerülni kell minden kockázatot.
Tegyük olvashatatlanná a jelszavakat.
A jelszó teljes értékére nekünk később nem nagyon van szükségünk, teljesen mindegy, hogy mit használunk helyette.
Minek tároljam el?
Sokkal jobban teszem, ha inkább csak egy hash-t rakok el, és ezzel azonosítom a felhasználót.
Használjunk pl. MD5, vagy még jobb SHA2, vagy SHA3 hash értéket.
SELECT SHA2('jelszo', 512);
Ügyelve arra, hogy a jelszó mezőbe most 128 karakter fog kerülni.
Ha a felhasználó neve sohasem változik, bonyolíthatjuk, tároljuk el így:
SELECT SHA2(CONCAT('felhasznalo-neve', 'jelszo'), 512);
Tehát össze is fűzhetjük a felhasználó nevével, gyakorlatilag lehetetlenné téve a visszafordítását még akkor is, ha a jelszó egy értelmes szó.
Egyszerű lekérdezéssel:
SELECT belephet FROM felhasznalo
WHERE (felhasznalo = 'felhasznalo-neve') AND (jelszo = SHA2('jelszo', 512));
Csak akkor léphet be, ha a válasz nem üres, vagy nem 'N'.