Junior — Middle
Come vengono memorizzate e protette le password degli utenti nel database PostgreSQL?
sobes.tech AI
Risposta dell'AI
In PostgreSQL, le password degli utenti di solito non vengono memorizzate nel database in chiaro. Al loro posto, vengono utilizzate funzioni di hashing e sale per proteggere le password.
Approcci principali:
- A livello di applicazione: la password dell'utente viene hashata (ad esempio, usando bcrypt, Argon2 o PBKDF2) con l'aggiunta di un sale unico, e viene memorizzato solo l'hash.
- A livello di PostgreSQL: per l'autenticazione, il sistema di gestione del database utilizza il proprio meccanismo, dove le password sono memorizzate come hash (MD5 o SCRAM-SHA-256).
Esempio di memorizzazione della password nella tabella utenti:
CREATE TABLE users (
id SERIAL PRIMARY KEY,
username TEXT UNIQUE NOT NULL,
password_hash TEXT NOT NULL
);
Durante la registrazione nell'app:
const bcrypt = require('bcrypt');
const password = 'user_password';
const saltRounds = 10;
const hash = await bcrypt.hash(password, saltRounds);
// salvare hash nel campo password_hash
In questo modo, anche in caso di compromissione del database, le password reali degli utenti rimangono protette.