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.