(In)Seguridad en aplicaciones Node.js

bit.ly/seguridad-node

@a0viedo

No importa qué tan bueno seas, todo código es propenso a bugs

Reaccionar rápido es tan importante cómo prevenir

Input del usuario

Demo

childProcess.execFile / childProcess.spawn to the rescue

"Voy a escribir mi propio parser de HTML"

"Voy a escribir mi propio parser de XML"

"Voy a escribir mi propio parser de JSON"

"Voy a escribir mi propio parser de cookies"

"Voy a escribir mi propio parser de URLs"

"Voy a escribir mi propio algoritmo de criptografía"

Inyecciones SQL

Pero MongoDB no usa SQL, por lo que está todo bien

demo nosql

Los drivers de MySQL y PostgreSQL permiten consultas parametrizadas 

Los query builders y ORMs son tus amigos: Knex.js, Bookshelf.js, Sequelize.js, etc.

Todas las dependencias deben instalarse por HTTPS

Tooling

nsp

snyk

Express / Restify

Express está algo roto

(por default)

  • Deshabilitar X-Powered
  • Usar helmet / lusca
  • Usar csurf
  • Usar nombre de cookies genéricos

Qué nos falta

Paquetes firmados en npm (!!!)

Auditorías de seguridad de pentesters

Exigencia de mejores valores por defecto a autores de módulos / frameworks

Recursos

¡Gracias!

twitter.com/a0viedo

github.com/a0viedo

(In)Seguridad en aplicaciones Node.js

By Alejandro Oviedo García

(In)Seguridad en aplicaciones Node.js

  • 2,665