es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué se realiza el hashing del token de restablecimiento de contraseña?

Tengo este manejador de olvido de contraseña en mi aplicación Express. Envío un correo electrónico con un token crypto.randomBytes(20).toString("hex"), que utilizo más tarde para verificar la solicitud. Funciona perfectamente.

Sin embargo, he visto que hay personas que están cifrando este token antes de enviarlo y almacenarlo en la base de datos, y no entiendo por qué, ya que es una cadena aleatoria.

const forgotPassword = async (req, res) => {
  try {
    const user = await User.findOne({ email: req.body.email });
    if (!user) {
      throw Error("correo electrónico incorrecto");
    }
    const resetPasswordToken = crypto.randomBytes(20).toString("hex");
    user.resetPasswordToken = resetPasswordToken;
    user.resetPasswordTokenExpire = Date.now() + 10 * (60 * 1000);
    await user.save();
    const message = `
      <h1>Ha solicitado restablecer su contraseña</h1>
      <p>Aquí está su token: </p>
      <p>${resetPasswordToken}</p>
    `;
    try {
      await sendEmail({
        to: user.email,
        subject: "Solicitud de restablecimiento de contraseña",
        text: message,
      });

      res.status(200).json({ message: "Correo electrónico enviado" });
    } catch (err) {
      user.resetPasswordToken = undefined;
      user.resetPasswordTokenExpire = undefined;
      res.status(500).json({ message: "No se pudo enviar el correo electrónico" });
    }
  } catch (error) {
    console.log(error);
    const errorDetails = handleErrors(error);
    res.status(400).json(errorDetails);
  }
};
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Pregunta: ¿Es necesario hacer hash del resetPasswordToken antes de almacenarlo en la base de datos en este escenario?

    No es necesario hacer hash del resetPasswordToken antes de almacenarlo en la base de datos en este escenario porque el token ya es una cadena generada aleatoriamente y no se puede utilizar para recuperar la contraseña del usuario por sí solo. Sin embargo, para mayor seguridad, hacer hash del token antes de almacenarlo en la base de datos puede dificultar más para un atacante adivinar o usar la fuerza bruta del token y obtener acceso a la cuenta del usuario. La decisión de hacer hash del token debe basarse en el nivel de seguridad necesario para la aplicación en particular.

Comments are closed.