Junior — Middle
Como são armazenadas e protegidas as passwords dos utilizadores na base de dados PostgreSQL?
sobes.tech IA
Resposta da IA
No PostgreSQL, as passwords dos utilizadores geralmente não são armazenados na base de dados em texto claro. Em vez disso, é utilizado hashing e sal para proteger as passwords.
Abordagens principais:
- Ao nível da aplicação: a password do utilizador é hash (por exemplo, usando bcrypt, Argon2 ou PBKDF2) com a adição de um sal único, e apenas o hash é guardado na base de dados.
- Ao nível do PostgreSQL: para autenticação, o sistema de gestão de bases de dados usa o seu próprio mecanismo, onde as passwords são armazenadas como hashes (MD5 ou SCRAM-SHA-256).
Exemplo de armazenamento de password na tabela de utilizadores:
CREATE TABLE users (
id SERIAL PRIMARY KEY,
username TEXT UNIQUE NOT NULL,
password_hash TEXT NOT NULL
);
Na aplicação, durante o registo:
const bcrypt = require('bcrypt');
const password = 'user_password';
const saltRounds = 10;
const hash = await bcrypt.hash(password, saltRounds);
// guardar hash no campo password_hash
Assim, mesmo em caso de comprometimento da base de dados, as passwords reais dos utilizadores permanecem protegidas.