Sobes.tech
Junior — Middle

Cum sunt stocate și protejate parolele utilizatorilor în baza de date PostgreSQL?

sobes.tech AI

Răspuns de la AI

În PostgreSQL, parolele utilizatorilor nu sunt de obicei stocate în clar în baza de date. În schimb, se utilizează hashing și sare pentru a proteja parolele.

Abordări principale:

  • La nivel de aplicație: parola utilizatorului este hash-ată (de exemplu, cu bcrypt, Argon2 sau PBKDF2) cu adăugarea unei sări unice, și doar hash-ul este salvat în bază.
  • La nivelul PostgreSQL: pentru autentificare, sistemul de gestionare a bazei de date folosește propriul mecanism, unde parolele sunt stocate sub formă de hash-uri (MD5 sau SCRAM-SHA-256).

Exemplu de stocare a parolei în tabelul utilizatorilor:

CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  username TEXT UNIQUE NOT NULL,
  password_hash TEXT NOT NULL
);

La înregistrare în aplicație:

const bcrypt = require('bcrypt');
const password = 'user_password';
const saltRounds = 10;
const hash = await bcrypt.hash(password, saltRounds);
// salvați hash-ul în câmpul password_hash

Astfel, chiar și în cazul compromiterii bazei de date, parolele reale ale utilizatorilor rămân protejate.