Sobes.tech
Junior — Middle

Jak jsou hesla uživatelů uložena a chráněna v databázi PostgreSQL?

sobes.tech AI

Odpověď od AI

V PostgreSQL se hesla uživatelů obvykle neukládají v otevřeném textu. Místo toho se používá hashování a sůl k ochraně hesel.

Hlavní přístupy:

  • Na úrovni aplikace: heslo uživatele je hashováno (například pomocí bcrypt, Argon2 nebo PBKDF2) s přidáním unikátní soli, a do databáze se ukládá pouze hash.
  • Na úrovni PostgreSQL: pro autentizaci systém používá vlastní mechanismus, kde jsou hesla uložena ve formě hashů (MD5 nebo SCRAM-SHA-256).

Příklad uložení hesla v tabulce uživatelů:

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

Při registraci v aplikaci:

const bcrypt = require('bcrypt');
const password = 'user_password';
const saltRounds = 10;
const hash = await bcrypt.hash(password, saltRounds);
// uložit hash do pole password_hash

Tímto způsobem zůstávají skutečná hesla uživatelů chráněna i při narušení databáze.