Junior — Middle
Kaip saugomos ir apsaugomos naudotojų slaptažodžiai PostgreSQL duomenų bazėje?
sobes.tech AI
Atsakymas iš AI
PostgreSQL dažnai naudotojų slaptažodžiai nėra saugomi atviru tekstu duomenų bazėje. Vietoje to, naudojamas maišymas ir druska, siekiant apsaugoti slaptažodžius.
Pagrindiniai požiūriai:
- Programos lygyje: naudotojo slaptažodis yra maišomas (pvz., naudojant bcrypt, Argon2 ar PBKDF2) su pridėta unikali druska, ir į duomenų bazę įrašomas tik maišas.
- PostgreSQL lygyje: autentifikacijai, duomenų bazė naudoja savo mechanizmą, kur slaptažodžiai saugomi kaip maišai (MD5 arba SCRAM-SHA-256).
Pavyzdys, kaip saugoti slaptažodį naudotojų lentelėje:
CREATE TABLE users (
id SERIAL PRIMARY KEY,
username TEXT UNIQUE NOT NULL,
password_hash TEXT NOT NULL
);
Registracijos metu programoje:
const bcrypt = require('bcrypt');
const password = 'user_password';
const saltRounds = 10;
const hash = await bcrypt.hash(password, saltRounds);
// išsaugoti hash laukelyje password_hash
Taip, net ir pažeidus duomenų bazę, naudotojų tikrieji slaptažodžiai lieka apsaugoti.