Sobes.tech
Junior — Middle

Ako sa ukladajú a chránia heslá používateľov v databáze PostgreSQL?

sobes.tech AI

Odpoveď od AI

V PostgreSQL sa často neukladajú heslá používateľov v otvorenom texte. Namiesto toho sa používajú hashovanie a soľ na ochranu hesiel.

Hlavné prístupy:

  • Na úrovni aplikácie: používateľské heslo sa hash-uje (napríklad bcrypt, Argon2 alebo PBKDF2) s pridaním unikátnej soli, a do databázy sa uloží iba hash.
  • Na úrovni PostgreSQL: pre autentifikáciu systém používa vlastný mechanizmus, kde sú heslá uložené vo forme hashov (MD5 alebo SCRAM-SHA-256).

Príklad uloženia hesla v tabuľke používateľov:

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

Pri registrácii v aplikácii:

const bcrypt = require('bcrypt');
const password = 'user_password';
const saltRounds = 10;
const hash = await bcrypt.hash(password, saltRounds);
// uložiť hash do poľa password_hash

Týmto spôsobom zostávajú skutočné heslá používateľov chránené aj pri narušení databázy.