3.3 KiB
3.3 KiB
id | title | challengeType | videoUrl | localeTitle |
---|---|---|---|---|
58a25c98f9fc0f352b528e7f | Hashing Your Passwords | 2 | Hashing tus contraseñas |
Description
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