Consejos Para Proteger Nuestras Aplicaciones Creadas con Node JS

Seguridad | | Comunidad: Crear un Post, Eventos Devs, Foro

Las aplicaciones creadas con Node JS pueden ser muy geniales, hay aplicaciones que nos permiten interactuar en tiempo real mediante sockets, esto permite que múltiples usuarios que estén mirando la misma interface vean los mismos cambios al mismo tiempo, también una aplicación creada con Node JS suele tener mejor velocidad y rendimiento en comparación con otras tecnologías o lenguajes de programación, pero nos olvidamos de la seguridad de la aplicación y en este Post te quiero compartir algunos consejos para que la mantengas protegida de usuarios maliciosos, vamos con ello.

Antes de continuar, te invito a leer los siguientes artículos.

Asimismo, te invito a escuchar el Podcast: “En Cuanto Tiempo Puedo Ser Un Buen Programador ?”:

Spotify: Sound Cloud: Apple Podcasts

Bien ahora continuemos con el Post: Consejos Para Proteger Nuestras Aplicaciones Creadas con Node JS. 

Node JS es un ambiente en tiempo de ejecución multiplataforma, hasta la fecha de este Post aún es de código abierto, esta basado en JavaScript y funciona del lado del servidor, probablemente lo estés utilizando en tus proyectos y te compartiré algunos consejos para que los mantengas seguro.

Autenticación en tu API REST con JWT

Si tienes Endpoints en tu API REST te recomiendo implementarles JWT (JSON Web Tokens), que brinda autenticación de usuarios mediante tokens a fin de obtener acceso a los recursos de los Endpoints. Si quieres saber más sobre JWT, puedes visitar la página oficial de esta tecnología en este enlace.

Mediante los JWT el usuario deberá enviar un token para poder tener acceso a los datos del servidor, por ejemplo si quiere obtener una lista de productos en la ruta o endpoint /productos, pues tendrá que enviar el token mas o menos con este formato tudominio.com/productos?token=as6asd87sa5da8asd8s8a7da87sda5asd8asd

Manejo de Errores

La comunidad de Node JS recomienda que se pasen los errores en las devoluciones de llamada (Callbacks) como primer argumento, ya que los errores solo ocurren en las operaciones asíncronas. Puedes hacer uso de async / await para obtener el flujo de control asíncrono como desees.

Si quieres saber más acerca de la función async / await, puedes leer la documentación oficial de JavaScript en este enlace.

Evita la Cross-Site Request Forgery (CSRF)

Cross-Site Request Forgery traducido al español significa Falsificación de Solicitudes Entre Sitios y es una técnica que permite a los usuarios maliciosos realizar tareas poco éticas usando el nombre de la victima. CSRF explota una vulnerabilidad en la aplicación donde la solicitud real y la solicitud falsificada no se pueden diferenciar. Imagina por un momento que pasa si el atacante cambia la contraseña de tu cuenta bancaria y transfiere todo tu dinero, estos ataques se denominan secuestro de sesión en el que el atacante maneja la sesión del usuario para lograr sus cometidos.

Existe un paquete NPM llamado csurf que te brinda protección mediante un Middleware en Node JS. Puedes instalarlos ejecutando el siguiente comando.

Luego puedes usar el middleware CSRF de la siguiente manera.

Por ende, podemos enviar el valor del token a la vista.

Mantén seguro el mecanismo CORS de tu proyecto

El termino Cross-Origin Resource Sharing (CORS) traducido al español significa Uso Compartido de Recursos de Origen Cruzado y es una tecnología que describe nuevos encabezado HTTP que brindan a los navegadores una forma de solicitar URLs remotas solo cuando tienen permiso. Esto es útil cuando se intenta realizar una llamada API a un dominio diferente al del propietario, este será bloqueado por la función del navegador llamada política del mismo origen.

imagen: developer.mozilla.org

La plataforma NPM cuenta con un paquete llamado cors que te proporciona un middleware Connect/Express para habilitar y gestionar el CORS en tu proyecto, puedes instalarlo ejecutando el siguiente comando.

Paso seguido podemos implementarlo en nuestra aplicación, mas o menos de la siguiente manera.

En la documentación oficial del paquete puedes encontrar funciones más avanzadas.

Utiliza Cookies de forma Segura

Las cookies o galletas en español, se utilizan de manera amplia en las páginas web para identificar la sesión del usuario, almacenar algunos datos en los navegadores del usuario, lo que permite que el servidor web reconozca al usuario mientras navega por el sitio y en general contienen datos confidenciales.

Al configurar tus cookies te recomiendo considerar los siguientes puntos:

Puedes instalar el paquete NPM llamado express-session para almacenar datos de la sesión de un usuario en el servidor y la identificación en la propia cookie y no en los datos de la sesión. Para instalar el paquete puedes ejecutar el siguiente comando.

Paso seguido usamos un middleware de sesión rápida.

Y también usamos un mi middleware de sesión de cookies.

Si quieres conocer más sobre este paquete, puedes visitar su documentación oficial en el repositorio NPM.

Utiliza Bcrypt

Es probable que no sepamos exactamente cuál es el algoritmo secreto que usan los usuarios malintencionados y el hecho de que uno mismo no pueda descifrarlo, tiende a ser irrelevante. Enfócate en generar o usar el algoritmo de tal manera que otros no puedan romperlo.

Un atacante puede utilizar herramientas comunes como cifrados por sustitución o cifrados polialfabéticos para recuperar el texto sin formato del texto cifrado. No uses tu propio sistema de criptografía, usa los que sean estándares en la industria en su lugar. Uno de los más utilizados es Bcrypt, ha existido durante bastante tiempo y permanece intacto hasta la fecha, es una función de has de contraseña. Puedes utilizar este paquete NPM llamado bcrypt en tus proyectos.

Conclusión

Hemos visto en este Post algunos consejos que pueden mantener segura tu aplicación y también a tus usuarios, te recomiendo buscar nuevas formas de ataque, nuevas tendencias que los usuarios maliciosos están utilizando, estar actualizado te ayudará mucho.

Nota(s)

  • No olvides que debemos usar la Tecnología para hacer cosas Buenas por el Mundo. 

Síguenos en nuestras Redes Sociales para que no te pierdas nuestros próximos contenidos. 

Newsletter

Suscríbete a Nuestro Boletín de Novedades:

(Luego de la suscripción no te va salir ningun mensaje. Solo revisa tu bandeja de Correo para confirmar tu suscripción)
* indicates required
Subscribirse
Notificar a
guest
0 Comments
Inline Feedbacks
View all comments