javascript - sessions - Seguridad en el servidor web Node.JS
node js express-session example (4)
Es posible que desee utilizar un proxy inverso.
Por lo tanto, estoy en el medio de aprender a manejar Node.JS, y hasta ahora me encanta. Ya tengo un par de proyectos en funcionamiento en los que creo que puedo utilizar nodejs.
Estoy preocupado, sin embargo, por la seguridad. Si escribo un servidor web personalizado usando el módulo http de Node.JS, ¿es probable que sea súper vulnerable a los ataques? Apache / IIS han tenido años (y años y años) de equipos profesionales que desarrollan seguridad en sus servidores web, y aún así la gente sigue encontrando agujeros. ¿Es probable que mi servidor web casero esté mucho más abierto al ataque?
¿En qué cosas puedo enfocarme para construir una buena capa de seguridad en mi servidor web? ¿Hay algún buen artículo que cubra el tema?
Intente utilizar Nginx como su servidor web frontend para mejorar la estabilidad y la seguridad. Busque en google algunos recursos para ese tema.
La razón por la que hay años y años de equipos profesionales que desarrollan seguridad en Apache / IIS es que todos abarcan servidores. Pueden tener todo tipo de servicios activados por defecto, ejecutando la versión X del software que necesita ser parcheado cuando se encuentra un agujero, etc.
Una de las mejores cosas que encuentro sobre Node.JS es que le dices lo que quieres ejecutar en el nivel del sistema operativo para tu aplicación específica. No hay capa intermediaria si no la quieres. De lo único que tengo que preocuparme es si lo hospedo en un servidor que administro son los puertos del nivel del sistema operativo y el código de la aplicación web. Sin archivos de configuración de Apache, actualizaciones de módulos, etc.
Por lo tanto, cuando se trata de seguridad en Node, JS se preocupa por eliminar la información externa antes de actuar, verificar la identidad en acciones potencialmente dañinas, etc. Esté lo más cerca posible. Utilice SFTP para transferir sus archivos al servidor de alojamiento remoto y simplemente tenga los puertos necesarios abiertos para que su aplicación web funcione correctamente.
Estoy de acuerdo con anm y schaermu sobre el uso de un proxy inverso para que sus visitantes no accedan directamente a su aplicación, incluso si realmente tiene más que ver con la estabilidad que con la seguridad.
Quiero agregar que también debe pensar en instalar de manera segura el Nodo y sus módulos. En particular, nunca instale npm usando este método:
curl http://npmjs.org/install.sh | sudo sh
Esto es básicamente dar shell de raíz a todo lo que obtienes de la red usando HTTP inseguro sin verificación alguna, sin saber siquiera con quién estás hablando. Esto puede llevar a un compromiso serio de todo su sistema utilizando métodos muy básicos y ampliamente conocidos, y si su sistema está en peligro, entonces no importa si su aplicación está detrás de un proxy inverso, firewall o algo así. Vea esta respuesta para una explicación más completa.