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.