Sobes.tech
Junior — Middle

¿Cómo se almacenan y protegen las contraseñas de los usuarios en la base de datos PostgreSQL?

sobes.tech AI

Respuesta de la IA

En PostgreSQL, las contraseñas de los usuarios generalmente no se almacenan en la base de datos en texto claro. En su lugar, se utilizan hash y sal para proteger las contraseñas.

Enfoques principales:

  • A nivel de la aplicación: la contraseña del usuario se hash (por ejemplo, usando bcrypt, Argon2 o PBKDF2) con la adición de una sal única, y solo se guarda el hash en la base de datos.
  • A nivel de PostgreSQL: para la autenticación, el sistema de gestión de bases de datos utiliza su propio mecanismo, donde las contraseñas se almacenan en forma de hashes (MD5 o SCRAM-SHA-256).

Ejemplo de almacenamiento de contraseña en la tabla de usuarios:

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

En la aplicación, durante el registro:

const bcrypt = require('bcrypt');
const password = 'user_password';
const saltRounds = 10;
const hash = await bcrypt.hash(password, saltRounds);
// guardar hash en el campo password_hash

De esta manera, incluso en caso de compromiso de la base de datos, las contraseñas reales de los usuarios permanecen protegidas.