Necesitas, ya sabes, asumir plena responsabilidad de tus propias dependencias. Quiero decir, las dependencias son geniales. Hay como millones de paquetes ahora mismo en NPM que podemos usar para acelerar cómo no trabajamos, ¿verdad? Y no tenemos que reconstruir cada segundo, cada proyecto que hacemos. Pero es importante entender que esas bibliotecas tienen algunos mantenedores alrededor, ¿verdad? Y deberíamos poder entender cómo funciona la seguridad de estas bibliotecas, si están mantenidas o no mantenidas y así sucesivamente.
Quiero decir, ya hay herramientas que podemos usar, como Snyk y Socket y así sucesivamente. Pero es importante que incluyas esto, ya sabes, revisión y auditoría de este tipo de dependencias y tener esto, ya sabes, actualizado con el tiempo. Así que incluye esto en tu ciclo de vida de desarrollo.
Necesitas entender también que si, ya sabes, creas cualquier tipo de servicio que esté fuera y disponible en el internet, tienes que, ya sabes, poner algunos límites en el uso de recursos, ¿verdad? Puede ser como la típica API, aplicar límites en las APIs, llamadas, ya sabes, limitar las comunicaciones, restricciones de IP, ya sabes, tener políticas, este tipo de cosas. También necesitas entender cómo gestionar las cookies, ya sabes, la exposición de datos sensibles es algo muy común, especialmente cuando tenemos errores en el servidor.
Veo, desafortunadamente, recientemente, muchos escenarios donde la gente no manejó adecuadamente los errores en el servidor y terminas enviando esta información de vuelta como el contenido de la solicitud y así sucesivamente. Así que básicamente estás proporcionando incluso mucha más información de la necesaria a un posible atacante también. Así que eso es importante, necesitas manejar los errores adecuadamente. Y necesitas registrar este tipo de cosas también, ¿verdad? Necesitas tener un registro adecuado en su lugar para que puedas entender qué pasó con cada solicitud y qué está pasando en tu servidor en los servicios que tienes en línea. Así que más tarde, puedes hacer una salida adecuada y rastrear qué pasó y entender qué está pasando, ¿verdad? No solo para errores de configuración y libros y errores, sino también en términos de seguridad, entender cómo la gente está explotando tu sistema te ayudará a entender cómo asegurarlos básicamente. Y necesitas tener algún tipo de monitoreo de seguridad y así sucesivamente.
Quiero decir, estoy diciendo muchas cosas, ¿verdad? Así que terminas teniendo una gran lista. Así que la priorización es importante. Así que déjame mostrarte algunas vulnerabilidades del mundo real que podrían ser bastante comunes o que veo bastante comunes. Así que la contaminación de prototipos es una de las cosas más complicadas en mi experiencia. Veo esto mucho. Es algo muy común en JavaScript. Tenemos algunos mecanismos en Node.js y Express para prevenir este tipo de cosas. Pero no hacemos eso para las cargas útiles que te envían, ¿verdad? Así que necesitas tener claro que cuando alguien te envía como un JSON o así, puedes ver allí muchas cargas útiles maliciosas que pueden forzar este tipo de contaminación de prototipos. Así que es importante entender en esto cómo funciona profundamente y también hacer estas sanitizaciones.
Por ejemplo, se entiende que la gente piensa que Express te proporciona como un, ya sabes, encabezados de seguridad bastante completos en su lugar. Así que tienes muchas políticas y así sucesivamente en los encabezados y esto hace que tu aplicación sea mucho más segura. En realidad, Express no hace eso hoy. Pero hay bibliotecas que te ayudan con eso, como Helmet, ¿verdad? Así que es importante entender este tipo de cosas porque reducirá mucho la superficie de ataque en tus aplicaciones. Paquetes maliciosos de terceros. Esto es algo muy común.
Comments