Sobes.tech
Junior — Middle

Jak przechowywane i chronione są hasła użytkowników w bazie danych PostgreSQL?

sobes.tech AI

Odpowiedź od AI

W PostgreSQL hasła użytkowników zazwyczaj nie są przechowywane w bazie danych w formie jawnej. Zamiast tego stosuje się funkcje hashujące i sól, aby chronić hasła.

Główne podejścia:

  • Na poziomie aplikacji: hasło użytkownika jest haszowane (np. za pomocą bcrypt, Argon2 lub PBKDF2) z dodaniem unikalnej soli, a w bazie zapisuje się tylko hash.
  • Na poziomie PostgreSQL: do uwierzytelniania system zarządzania bazą danych używa własnego mechanizmu, w którym hasła są przechowywane jako hasze (MD5 lub SCRAM-SHA-256).

Przykład przechowywania hasła w tabeli użytkowników:

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

Podczas rejestracji w aplikacji:

const bcrypt = require('bcrypt');
const password = 'user_password';
const saltRounds = 10;
const hash = await bcrypt.hash(password, saltRounds);
// zapisz hash w polu password_hash

W ten sposób, nawet w przypadku naruszenia bazy danych, rzeczywiste hasła użytkowników pozostają chronione.