Sobes.tech
Junior — Middle

Hogyan tárolódnak és védik a felhasználók jelszavait a PostgreSQL adatbázisban?

sobes.tech MI

Válasz az MI-től

A PostgreSQL-ben a felhasználók jelszavait általában nem tárolják nyílt szövegként az adatbázisban. Ehelyett hash-elést és sót alkalmaznak a jelszavak védelmére.

Fő megközelítések:

  • Alkalmazási szinten: a felhasználó jelszava hash-elve (pl. bcrypt, Argon2 vagy PBKDF2 segítségével) egyedi só hozzáadásával, és csak a hash kerül mentésre az adatbázisba.
  • PostgreSQL szinten: az adatbázis saját mechanizmusát használja az autentikációhoz, ahol a jelszavak hash-ként (MD5 vagy SCRAM-SHA-256) vannak tárolva.

Példa a jelszó tárolására a felhasználói táblában:

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

Regisztrációkor az alkalmazásban:

const bcrypt = require('bcrypt');
const password = 'user_password';
const saltRounds = 10;
const hash = await bcrypt.hash(password, saltRounds);
// hash mentése a password_hash mezőbe

Így, még az adatbázis kompromittálása esetén is, a felhasználók valódi jelszavai védve maradnak.