Cifrado AES en Node Js: autenticación en página de registro

Una de las más grandes responsabilidades al solicitar información de visitantes es cuidar sus datos y para esto, hoy conoceremos el cifrado AES en Node JS. Si bien, existen diferentes métodos de cifrado, encriptación o resguardo de contraseñas o cuentas, AES nos permite tener una autenticación o algoritmo de cifrado de calidad, totalmente gratis.

Hoy me enfocaré en mostrarte cómo implementar este algoritmo de encriptación por medio de un paquete de Node JS a nuestra aplicación web. Vamos a comenzar.

Lo que vas a necesitar

Antes de comenzar con el proceso, te dejo aquí algunas herramientas que vas a necesitar:

Algoritmo AES

Cifrado AES en Node JS
crear contrato solidity
Cómo crear contrato solidity: lotería en ethereum

En esta tercera sesión del curso veremos cómo crear contrato solidity para ethereum con base en una …

Qué es Gas y GasPrice: transacciones y congestión en blockchain

Cuando ejecutamos transacciones en blockchain es probable que desconozcamos los costos o tiempos de …

truffle ganache nodejs
Entorno de prueba blockchain con truffle ganache Nodejs: sesión 1

Si estás iniciando en la programación blockchain, es demasiado importante conocer los entornos de pr…

En sus siglas Advanced Encryption Standard, hoy estándar de cifrado por Estados Unidos. Este algoritmo también llamado Rijndael es creado por 2 belgas llamados: Joan Daemen y Vincent Rijmen. En sí, es conocido por medio de una convocatoria o concurso para desarrollar un nuevo método de cifrado que reemplazara a su predecesor DES, el cual debía tener los siguientes requerimientos:

  • Público o disponible para todo el mundo.
  • Ser un algoritmo de cifrado simétrico.
  • Con claves de cifrado de 128, 192 y 256 bits.

Desde el 2006 es uno de los algoritmos más usados para la criptografía simétrica.

Paquete mongoose-encryption: implementación en Node JS

Mongoose-encruption

Ahora, para poder implementarlo en Node js usaremos el paquete Mongoose-encryption. Este paquete nos permitirá encriptar y desencriptar campos específicos de nuestro esquema de base de datos Mongodb. En teoría, cuando una persona ingrese su contraseña, esta será encriptada para ser guardad en la base de datos.

Hay varios métodos de lograrlo, pero usaremos uno de los mencionados en el paquete: Cadena secreta en lugar de dos claves, o «Secret String Instead of Two Keys». Básicamente lo que haremos será crear una llave con la cual se hará la encriptación de un campo.

Instalación

Como primer paso lo que haremos será instalar tal cual nos indica npm:

npm i mongoose-encryption

A continuación solicitaremos el paquete, asignándole la constante «encrypt» así:

const encrypt = require("mongoose-encryption");

De esta manera ya podemos proceder a modificar server.js o bien el archivo que contenga la configuración del servidor en tu web.

Modificación Schema

Si ya cuentas con un schema correctamente configurado, puedes pasar al siguiente paso, sin embargo, puedes revisar este método. Lo que haremos será cambiar el schema como objeto sencillo y usaremos el método del paquete mongoose de node js para poder crear a partir de este, un schema. Lo hacemos así:

const Schema = mongoose.Schema;

const usuarioSchema = new Schema ({
    nombre: String,
    email: String,
    contraseña: String
});

De esta manera podemos proceder a encriptar sin problema.

Schema Plugin: cadena secreta en lugar de dos claves

Ahora nos centraremos en la encriptación, con la siguiente línea la cual se encuentra también en la información del paquete:

const Secretos = "miclavesecreta";
usuarioSchema.plugin(encrypt, {secret: Secretos, encryptedFields: ["contraseña"] });

De esta manera, usamos plugin para usuarioSchema, donde se encriptará el campo «contraseña», usando el secreto creado anteriormente.

Dotenv: Variables de entorno

Dotenv

Ahora nos centraremos en la protección de esta llave de encriptación. Primero usaremos el paquete Dotenv y luego modificaremos el archivo gitignore.

Crearemos un archivo .env el cual contendrá variables sensibles de nuestra aplicación, como la llave de encriptación o claves API. Ahora, para su instalación, usaremos:

npm i dotenv
Archivo env

A continuación, procederemos a crear un archivo el cual contendrá el secreto que usaremos. Simplemente crea un archivo llamado .env en la carpeta contenedora de tu programa y dentro, escribe el secreto para el cual se usará la encriptación, por ejemplo:

SECRETO=MICLAvesecreta

Por último procedemos a cambiar este Secreto dentro de nuestro código en el servidor, de la siguiente manera:

usuarioSchema.plugin(encrypt, {secret: process.env.SECRETOS, encryptedFields: ["contraseña"] });

Proccess env nos permite implementar el valor de SECRETOS de una manera segura y pasarlo como «secret» para la encriptación del campo «contraseña» del esquema «usuarioSchema».

Gitignore

gitignore

Por último, vamos a solicitar que se ignore este archivo al momento de subirlo a GitHub, de esta manera protegemos nuestra clave secreta y demás archivos. Aquí te dejo el link del repo usado en el video el cual contiene una plantilla de gitignore, con los archivos que son más frecuentemente ignorados.

Si no deseas usar el repo, simplemente:

  • Crea un archivo .gitignore dentro de la carpeta contenedora de tu aplicación web.
  • Añade .env

De esta manera este archivo será ignorado.

Video de ayuda

Hice este video para guiarte en el proceso completo junto con unos consejos sobre la selección de contraseñas en general. Si te gusta, no olvides dar like y suscribirte para nuevos videos.

Cifrado AES

Producto sugerido

Si al igual que yo, pasas demasiado tiempo en un pc, puede que este producto te ayude, como yo a cuidar mis manos y a su vez, optimizar mis horas de digitalización. Te recomiendo totalmente este teclado mecánico Keychron k6. Si quieres ver la reseña completa puedes hacerlo aquí.

keychron k6 – 490 valoraciones

Keychron K6 65% compacto teclado mecánico inalámbrico para Mac, retroiluminación blanca, Bluetooth, multitarea, tipo C con cable teclado para Windows con interruptor marrón Gateron

  • El Keychron K6 es un teclado mecánico inalámbrico Bluetooth compacto de 65 % con retroiluminación blanca hecha para Mac y Windows. El K6 está diseñado para maximizar tu espacio de trabajo y mejorar la productividad.
  • Con un diseño único de Mac, compatibilidad con Windows y teclas de flecha dedicadas, el K6 ofrece una cómoda accesibilidad a todas las teclas multimedia y funciones esenciales a través de la combinación de pulsaciones de teclas, pero lo suficientemente compacto para que puedas llegar a tu ratón más fácilmente. Teclas adicionales para sistemas operativos Windows y Mac están incluidas.
  • Se conecta con hasta 3 dispositivos a través del fiable chipset Broadcom Bluetooth 5.1 y cambia entre ellos fácilmente para necesidades multitarea. El K6 es mejor para adaptarse al hogar, la oficina y el uso de juegos ligeros mientras se conecta con tu smartphone, portátil y iPad. También tiene modo con cable con conexión USB tipo C.

VER EN AMAZON

Conclusión

Este es uno de los muchos métodos para proteger la información de nuestros clientes en la base de datos y la verdad es que nunca será suficiente protección. Sin embargo el algoritmo AES lo logra eficientemente tanto en seguridad como en implementación para Node Js.

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 0 / 5. Recuento de votos: 0

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en los medios sociales!

Resumen
Cifrado AES en Node JS | Autenticación | Implementación VS Code ✅
Nombre del artículo
Cifrado AES en Node JS | Autenticación | Implementación VS Code ✅
Descripción
Si estás buscando un método de encriptación para tu base de datos, conoce aquí cómo implementar el cifrado AES en Node JS con React. ✅
Autor
Publisher Name
Eduardo Arias
Publisher Logo

Deja un comentario

Carrito de compra