freeCodeCamp/curriculum/challenges/spanish/06-information-security-and.../advanced-node-and-express/hashing-your-passwords.span...

3.3 KiB

id title challengeType videoUrl localeTitle
58a25c98f9fc0f352b528e7f Hashing Your Passwords 2 Hashing tus contraseñas

Description

Como recordatorio, este proyecto se está construyendo sobre el siguiente proyecto de inicio en Glitch , o clonado desde GitHub . Volviendo a la sección de seguridad de la información, puede recordar que almacenar las contraseñas de texto sin formato nunca está bien. Ahora es el momento de implementar BCrypt para resolver este problema.
Agregue BCrypt como una dependencia y solicítelo en su servidor. Tendrá que manejar el hash en 2 áreas clave: donde se manejará el registro / guardar una nueva cuenta y cuando verifique que la contraseña sea correcta al iniciar sesión. Actualmente en nuestra ruta de registro, inserta la contraseña de un usuario en la base de datos como la siguiente: password: req.body.password . Una forma fácil de implementar guardar un hash es agregar lo siguiente antes de la lógica de su base de datos var hash = bcrypt.hashSync(req.body.password, 12); y reemplazando req.body.password en la base de datos guardando solo con password: hash . Finalmente, en nuestra estrategia de autenticación, verificamos lo siguiente en nuestro código antes de completar el proceso: if (password !== user.password) { return done(null, false); } . Después de hacer los cambios anteriores, ahora user.password es un hash. Antes de realizar un cambio en el código existente, observe cómo la declaración está verificando si la contraseña NO es igual y luego devuelva sin autenticarse. Teniendo esto en cuenta, su código podría tener el siguiente aspecto para verificar correctamente la contraseña ingresada contra el hash: if (!bcrypt.compareSync(password, user.password)) { return done(null, false); } Eso es todo lo que se necesita para implementar una de las funciones de seguridad más importantes cuando tiene que almacenar contraseñas! Envía tu página cuando creas que lo has hecho bien.

Instructions

Tests

tests:
  - text: BCrypt es una dependencia
    testString: ' getUserInput => $.get(getUserInput("url")+ "/_api/package.json") .then(data => { var packJson = JSON.parse(data); assert.property(packJson.dependencies, "bcrypt", "Your project should list "bcrypt" as a dependency"); }, xhr => { throw new Error(xhr.statusText); })'
  - text: BCrypt correctamente requerido e implementado
    testString: 'getUserInput => $.get(getUserInput("url")+ "/_api/server.js") .then(data => { assert.match(data, /require.*("|")bcrypt("|")/gi, "You should have required bcrypt"); assert.match(data, /bcrypt.hashSync/gi, "You should use hash the password in the registration"); assert.match(data, /bcrypt.compareSync/gi, "You should compare the password to the hash in your strategy"); }, xhr => { throw new Error(xhr.statusText); })'

Challenge Seed

Solution

// solution required