Hírek


    Híreink forrása: Jómagam honlapja

    Jelszavak tárolása

    Programozás

    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.

    Egyszerű megoldás

    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.

    SQL

    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ó.

    Hogyan keressem vissza?

    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'.