Plantas vs Ladrones: Pruebas Automatizadas en el Mundo de la Seguridad Web

Rate this content
Bookmark

La seguridad web es crucial en un entorno en constante evolución donde las amenazas potenciales siempre están presentes. Para entender mejor este concepto, podemos imaginar nuestra aplicación web como un jardín o un hogar que necesita ser protegido de posibles ataques. Podemos trazar paralelismos con el popular juego "Plants vs. Zombies," que tiene como objetivo salvaguardar tu jardín de intrusos.

Nuestras pruebas automatizadas funcionan como guardianes diligentes cuyo objetivo principal es identificar y abordar posibles vulnerabilidades, al igual que el diverso arsenal de plantas en el juego. En lugar de enmarcar el proceso de seguridad como una lucha interminable, exploraremos cómo las pruebas automatizadas actúan como defensores contra posibles problemas, ya sean zombis o intrusos. Junto a una visión general de las herramientas que puedes utilizar, enfatizamos la importancia de los tipos de pruebas fundamentales, como las pruebas unitarias o de extremo a extremo, para asegurar tu jardín digital.

Este es mi borrador de presentación de diapositivas: https://speakerdeck.com/leichteckig/plants-vs-thieves-automated-tests-in-the-world-of-web-security. Estoy pensando en reemplazar los fragmentos de código con videos o codificación en vivo.

Después de mi sesión, los asistentes comprenderán mejor las herramientas para elegir. Sin embargo, hay otros enfoques además de este: me gustaría destacar cómo asegurar la seguridad web utilizando tipos de pruebas fundamentales como las pruebas unitarias o de extremo a extremo para mantener el mantenimiento y la curva de aprendizaje bajos. Un efecto secundario agradable será la demostración de amenazas comunes de seguridad al ver las pruebas utilizadas para detectarlas.
- El asistente aprenderá una visión general de las herramientas que elijas
- El asistente explorará opciones para usar la automatización de pruebas para mejorar la seguridad web sin la necesidad de nuevas dependencias

Esta charla es más bien independiente del marco. Sin embargo, Testing y Security son temas altamente relevantes para la comunidad de React, ya que ambos aseguran una aplicación de alta calidad y protegen a los usuarios y las características. La seguridad es esencial, especialmente hoy en día. Mi charla combina Security y Testing. Ambos pueden ser desalentadores, por lo que me encantaría ayudar a los espectadores a construir sus aplicaciones de manera segura.

This talk has been presented at React Day Berlin 2024, check out the latest edition of this React Conference.

Ramona Schwering
Ramona Schwering
25 min
16 Dec, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Hola a todos, y estoy muy feliz de verlos aquí en React Day Berlin. Esta charla trata sobre seguridad y pruebas, dos temas que me apasionan. Es una maravillosa alegoría sobre la seguridad web usando Plants vs. Zombies como inspiración. Hay razones para centrarse en las pruebas como línea de defensa. Conoce tu aplicación y sus vulnerabilidades. Las pruebas son el mensajero, escúchalas. Usa el ranking de los 10 principales de OWASP para entender los riesgos de seguridad más importantes, incluyendo el control de acceso roto y la falla criptográfica. La inyección es un riesgo de seguridad importante. Escribir pruebas adecuadas y usar casos de prueba puede ayudar a mitigar este problema. Para probar vulnerabilidades de inyección, escribe pruebas negativas que simulen inyecciones adicionales en los campos de entrada. Prueba las políticas de seguridad de contenido usando Cypress. Implementar mejores prácticas y múltiples defensas puede mantener a los atacantes a raya. La automatización es esencial para detectar problemas de seguridad en tu aplicación. Escribe casos de prueba, utiliza las características de los marcos de prueba y considera usar diferentes tipos de pruebas.

1. Introducción a la Seguridad Web y Pruebas

Short description:

Hola a todos, y estoy muy feliz de verlos aquí en React Day Berlin. Esta charla es sobre seguridad y pruebas, dos temas que me apasionan. Es una maravillosa alegoría sobre la seguridad web usando Plants vs. Zombies como inspiración. La casa representa la parte protegida de nuestra aplicación, y el jardín es nuestra línea de defensa. Construyamos nuestro jardín con mejores prácticas y pruebas, no solo confiando en herramientas como Sonocube y Snick.

Hola a todos, y estoy muy feliz de verlos aquí, o, bueno, no puedo verlos a través de la pantalla, pero sé que están ahí. Estoy feliz de tenerlos aquí en React Day Berlin. Y de hecho, esta charla fue una de las razones por las que me puse nostálgico al prepararla. Y no es solo la época navideña, y por supuesto esto también me da sentimientos nostálgicos también.

Es el tema de mi charla, de hecho. Tal vez algunos de ustedes ya reconozcan el título. Pero supongo que este es un tema que los mantendrá alejados del ambiente navideño, al menos por un poco, ¿de acuerdo? En el lado técnico, esta charla es sobre seguridad y sobre pruebas. Así que dos temas que me apasionan y que realmente amo. Y espero que podamos construir algunas defensas maravillosas usando la automatización de pruebas.

Bien, las pocas personas que ya podrían haber captado esta cosa de la nostalgia, tal vez reconozcan la fuente en el título o el título en su totalidad, Plants vs. Beefs, porque se deriva de Plants vs. Zombies. Este es un juego creado por PopCup, la compañía se llamaba así, en 2009, creo. Sí. Y fue un juego maravilloso, multiplataforma, de hecho el único juego que jugué en mi teléfono móvil porque soy un jugador de consola y PC, pero eso no es importante ahora.

Es un juego de defensa de torres donde intentas básicamente defender una base contra enemigos, ¿verdad? Y en Plants vs. Zombies, como el nombre ya lo implica, intentarás proteger tu casa contra zombis en un apocalipsis zombi. Lo sé, no es muy navideño, pero un apocalipsis zombi usando plantas dentro de tu jardín. Bueno, por supuesto, esta es una maravillosa alegoría, ¿verdad? Es nostálgico, es nerd, pero ¿qué tiene que ver eso con el desarrollo web?

Bueno, ¿y si te dijera que es una maravillosa alegoría sobre la seguridad web? Realmente lo creo porque, veámoslo así, tenemos un zombi, que es una amenaza y atacante, un riesgo de seguridad y explotar cualquier cosa que podría ser un peligro para tu sistema, ¿verdad? Y la planta aquí, es la contramedida, la estrategia de mitigación, una solución de seguridad, cualquier cosa que podría proteger tu aplicación contra atacantes, contra esos riesgos de seguridad o exploits. Con una lente más general aquí, puedes ver que la casa es básicamente el área protegida, la parte protegida en nuestra aplicación que podría ser datos que queremos proteger porque es sensible, es importante.

O queremos cumplir con las leyes, necesitamos proteger nuestros datos o proteger características porque queremos que las personas básicamente paguen algo de dinero por aplicaciones, ¿verdad? O al menos ser usuarios registrados de los que sabemos. Así que la propiedad aquí, la cosa completa, incluyendo la casa, incluyendo el jardín, son nuestras defensas contra esos trucos. Así que defensas contra los zombis, ¿verdad? Y defensas contra amenazas de seguridad. Así que si consideramos nuestro jardín, nuestras defensas, construyamos nuestro jardín, ¿verdad? Porque nuestras plantas dentro de este jardín son nuestras líneas de defensa. Todas las defensas que tenemos bajo nuestro cinturón. Y mi primer pensamiento sería como, de acuerdo, mejores prácticas. Somos geniales construyendo nuestras aplicaciones de una manera segura, ¿verdad? Las pruebas pueden ser una idea también, en mi mente, al menos. No solo porque me apasionan las pruebas, porque sé que podría ayudarnos y ser una línea de defensa también. Entonces, ¿pueden las pruebas ayudarnos? Y por supuesto, el primer pensamiento dentro de mi mente, y supongo que en sus mentes también, es herramientas, como Sonocube, como Snick, o todas esas cosas que prueban problemas de seguridad y te notifican. Pero, por supuesto, sería el camino fácil.

2. Testing as a Line of Defense

Short description:

Hay razones para centrarse en las pruebas como una línea de defensa. Aprende tu aplicación y sus vulnerabilidades. Las pruebas son el mensajero, escúchalas. Usa el ranking de los 10 principales de OWASP para entender los riesgos de seguridad más importantes, incluyendo el control de acceso roto y fallos criptográficos.

Simplemente diría algo así como, está bien, paguemos por algunas herramientas, instalémoslas, aprendámoslas, eso es todo. Bueno, ¿y si no quiero aprender nuevas herramientas o gastar dinero en, de nuevo, nuevas herramientas, si no quiero depender de terceros, básicamente, verdad? ¿O si quiero aprender lo que esas herramientas ya están haciendo? Bueno, hay muchas razones para optar por las pruebas también. E incluso si es solo una línea de defensa entre muchas.

Pero antes de eso, rápidamente, déjame hacer el importante descargo de responsabilidad o una mención honorable donde lo compraste. Aprende tu aplicación. Sigues siendo la persona más importante a cargo, ¿verdad? Esto se reflejará en tus esfuerzos de prueba, pero generalmente en la calidad de tu aplicación también. Así que aprende las vulnerabilidades de tu aplicación para que sepas cómo construir tu aplicación de manera segura. Y por supuesto, sabe qué probar, pero llegaremos a eso un poco más tarde.

Y ten en cuenta una cosa, las pruebas son siempre el mensajero, no más que eso porque solo te notificarán sobre problemas de seguridad, aún necesitas actuar por tu cuenta. Así que básicamente, ten en cuenta que todavía juegas un papel en eso. No puedes automatizar todo, pero escucha las advertencias, escucha a tu mensajero, escucha las pruebas.

Bien, entonces, ¿cómo podemos aprender nuestra aplicación y aprender vulnerabilidades y aprender dónde mirar para escribir esas pruebas? Bueno, hay un grupo de personas o un proyecto que nos ayuda mucho. Se llama OWASP, que es una abreviatura de Open Worldwide Application Security Project. Y es un proyecto cuyo objetivo es aumentar la seguridad dentro de la web. Así que publicaron un ranking de los 10 principales riesgos de seguridad más importantes, y lo actualizan en un cierto ritmo. Supongo que el último fue en 2021. Y hasta donde sé, ahora en diciembre, están recopilando el conjunto de datos para un nuevo ranking en 2025. Así que mantente atento, podría haber algunos cambios, pero por ahora, el de 2021 es el último ranking y es el más reciente. Así que para eso, echaremos un vistazo a los tres principales riesgos. Así que alerta de spoiler, todos somos desarrolladores front-end, estamos haciendo React, e incluso si estás usando otros frameworks, todavía estás trabajando en front-end.

Así que hay un punto que miraremos explícitamente porque es importante para los desarrolladores front-end. Pero llegaremos a eso. No quiero apresurarme en esta charla, aunque seré consciente de tu tiempo. Bien, entonces, ¿dónde mirar? Como se dijo, los tres riesgos más importantes según OWASP, que son el primero, el más importante de todos, el control de acceso roto, lo que significa que un usuario puede actuar fuera de sus permisos, pudiendo leer o cambiar cosas que no deberían poder. El segundo será la inyección. No, voy demasiado rápido, lo siento. Es el fallo criptográfico. Así que básicamente, que las necesidades criptográficas no se cumplen. Las cosas no están debidamente encriptadas. Tal vez datos, tal vez conexión, no estás usando HTTP, cosas así.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Es una jungla ahí fuera: ¿Qué está pasando realmente dentro de tu carpeta Node_Modules?
Node Congress 2022Node Congress 2022
26 min
Es una jungla ahí fuera: ¿Qué está pasando realmente dentro de tu carpeta Node_Modules?
Top Content
The talk discusses the importance of supply chain security in the open source ecosystem, highlighting the risks of relying on open source code without proper code review. It explores the trend of supply chain attacks and the need for a new approach to detect and block malicious dependencies. The talk also introduces Socket, a tool that assesses the security of packages and provides automation and analysis to protect against malware and supply chain attacks. It emphasizes the need to prioritize security in software development and offers insights into potential solutions such as realms and Deno's command line flags.
El estado de la autenticación sin contraseña en la web
JSNation 2023JSNation 2023
30 min
El estado de la autenticación sin contraseña en la web
Passwords are terrible and easily hacked, with most people not using password managers. The credential management API and autocomplete attribute can improve user experience and security. Two-factor authentication enhances security but regresses user experience. Passkeys offer a seamless and secure login experience, but browser support may be limited. Recommendations include detecting Passkey support and offering fallbacks to passwords and two-factor authentication.
5 Formas en las que Podrías Haber Hackeado Node.js
JSNation 2023JSNation 2023
22 min
5 Formas en las que Podrías Haber Hackeado Node.js
Top Content
The Node.js security team is responsible for addressing vulnerabilities and receives reports through HackerOne. The Talk discusses various hacking techniques, including DLL injections and DNS rebinding attacks. It also highlights Node.js security vulnerabilities such as HTTP request smuggling and certification validation. The importance of using HTTP proxy tunneling and the experimental permission model in Node.js 20 is emphasized. NearForm, a company specializing in Node.js, offers services for scaling and improving security.
Política de Seguridad de Contenido con Next.js: Mejorando la Seguridad de tu Sitio Web
React Summit US 2023React Summit US 2023
9 min
Política de Seguridad de Contenido con Next.js: Mejorando la Seguridad de tu Sitio Web
Top Content
Lucas Estevão, a Principal UI Engineer and Technical Manager at Avenue Code, discusses how to implement Content Security Policy (CSP) with Next.js to enhance website security. He explains that CSP is a security layer that protects against cross-site scripting and data injection attacks by restricting browser functionality. The talk covers adding CSP to an XJS application using meta tags or headers, and demonstrates the use of the 'nonce' attribute for allowing inline scripts securely. Estevão also highlights the importance of using content security reports to identify and improve application security.
Permíteme mostrarte cómo las aplicaciones de React son hackeadas en el mundo real
React Advanced 2021React Advanced 2021
22 min
Permíteme mostrarte cómo las aplicaciones de React son hackeadas en el mundo real
Top Content
React's default security against XSS vulnerabilities, exploring and fixing XSS vulnerabilities in React, exploring control characters and security issues, exploring an alternative solution for JSON parsing, and exploring JSON input and third-party dependencies.
Cómo se hackean las aplicaciones React en el mundo real
React Summit 2022React Summit 2022
7 min
Cómo se hackean las aplicaciones React en el mundo real
Top Content
How to hack a RealWorld live React application in seven minutes. Tips, best practices, and pitfalls when writing React code. XSS and cross-site scripting in React. React's secure by default, but not always. The first thing to discover: adding a link to a React application. React code vulnerability: cross-site scripting with Twitter link. React doesn't sanitize or output H ref attributes. Fix attempts: detect JavaScript, use dummy hashtag, transition to lowercase. Control corrector exploit. Best practices: avoid denialist approach, sanitize user inputs. React's lack of sanitization and output encoding for user inputs. Exploring XSS vulnerabilities and the need to pretty print JSON. The React JSON pretty package and its potential XSS risks. The importance of context encoding and secure coding practices.

Workshops on related topic

Masterclass Práctica: Introducción a Pentesting para Aplicaciones Web / APIs Web
JSNation US 2024JSNation US 2024
148 min
Masterclass Práctica: Introducción a Pentesting para Aplicaciones Web / APIs Web
Featured Workshop
Gregor Biswanger
Gregor Biswanger
En esta masterclass práctica, estarás equipado con las herramientas para probar efectivamente la seguridad de las aplicaciones web. Este curso está diseñado tanto para principiantes como para aquellos que ya están familiarizados con las pruebas de seguridad de aplicaciones web y desean ampliar su conocimiento. En un mundo donde los sitios web juegan un papel cada vez más central, asegurar la seguridad de estas tecnologías es crucial. Comprender la perspectiva del atacante y conocer los mecanismos de defensa apropiados se han convertido en habilidades esenciales para los profesionales de TI.Esta masterclass, dirigida por el renombrado entrenador Gregor Biswanger, te guiará a través del uso de herramientas de pentesting estándar de la industria como Burp Suite, OWASP ZAP y el marco profesional de pentesting Metasploit. Aprenderás a identificar y explotar vulnerabilidades comunes en aplicaciones web. A través de ejercicios prácticos y desafíos, podrás poner en práctica tu conocimiento teórico y expandirlo. En este curso, adquirirás las habilidades fundamentales necesarias para proteger tus sitios web de ataques y mejorar la seguridad de tus sistemas.
De 0 a Autenticación en una hora con ReactJS
React Summit 2023React Summit 2023
56 min
De 0 a Autenticación en una hora con ReactJS
WorkshopFree
Kevin Gao
Kevin Gao
La autenticación sin contraseña puede parecer compleja, pero es simple de agregar a cualquier aplicación utilizando la herramienta adecuada. Hay múltiples alternativas que son mucho mejores que las contraseñas para identificar y autenticar a tus usuarios, incluyendo SSO, SAML, OAuth, Magic Links, One-Time Passwords y Authenticator Apps.
Mientras abordamos los aspectos de seguridad y evitamos errores comunes, mejoraremos una aplicación JS de pila completa (backend Node.js + frontend React) para autenticar a los usuarios con OAuth (inicio de sesión social) y One Time Passwords (correo electrónico), incluyendo:- Autenticación de usuarios - Gestión de interacciones de usuarios, devolviendo JWTs de sesión / actualización- Gestión y validación de sesiones - Almacenamiento seguro de la sesión para solicitudes de cliente posteriores, validación / actualización de sesiones- Autorización básica - extracción y validación de reclamaciones del token JWT de sesión y manejo de autorización en flujos del backend
Al final del masterclass, también exploraremos otros enfoques de implementación de autenticación con Descope, utilizando SDKs de frontend o backend.
Principales Diez Vulnerabilidades de Seguridad OWASP en Node.js
JSNation 2024JSNation 2024
97 min
Principales Diez Vulnerabilidades de Seguridad OWASP en Node.js
Workshop
Marco Ippolito
Marco Ippolito
En este masterclass, cubriremos las diez vulnerabilidades más comunes y riesgos de seguridad críticos identificados por OWASP, que es una autoridad confiable en Seguridad de Aplicaciones Web.Durante el masterclass, aprenderás cómo prevenir estas vulnerabilidades y desarrollar la capacidad de reconocerlas en aplicaciones web.El masterclass incluye 10 desafíos de código que representan cada una de las vulnerabilidades más comunes de OWASP. Se proporcionarán pistas para ayudar a resolver las vulnerabilidades y pasar las pruebas.El instructor también proporcionará explicaciones detalladas, diapositivas y ejemplos de la vida real en Node.js para ayudar a comprender mejor los problemas. Además, obtendrás información de un Mantenedor de Node.js que compartirá cómo gestionan la seguridad en un proyecto grande.Es adecuado para desarrolladores de Node.js de todos los niveles de habilidad, desde principiantes hasta expertos, se requiere un conocimiento general de aplicaciones web y JavaScript.
Tabla de contenidos:- Control de Acceso Roto- Fallas Criptográficas- Inyección- Diseño Inseguro- Configuración de Seguridad Incorrecta- Componentes Vulnerables y Obsoletos- Fallas de Identificación y Autenticación- Fallas de Integridad de Software y Datos- Fallas de Registro y Monitoreo de Seguridad- Falsificación de Solicitudes del Lado del Servidor
Cómo Construir Control de Acceso Front-End con NFTs
JSNation 2024JSNation 2024
88 min
Cómo Construir Control de Acceso Front-End con NFTs
WorkshopFree
Solange Gueiros
Solange Gueiros
Comprende los fundamentos de la tecnología NFT y su aplicación en el fortalecimiento de la seguridad web. A través de demostraciones prácticas y ejercicios prácticos, los asistentes aprenderán cómo integrar sin problemas mecanismos de control de acceso basados en NFT en sus proyectos de desarrollo front-end.
Encontrar, Hackear y solucionar las vulnerabilidades de NodeJS con Snyk
JSNation 2022JSNation 2022
99 min
Encontrar, Hackear y solucionar las vulnerabilidades de NodeJS con Snyk
WorkshopFree
Matthew Salmon
Matthew Salmon
npm y seguridad, ¿cuánto sabes sobre tus dependencias?Hack-along, hacking en vivo de una aplicación Node vulnerable https://github.com/snyk-labs/nodejs-goof, Vulnerabilidades tanto de código abierto como de código escrito. Se anima a descargar la aplicación y hackear junto con nosotros.Corrigiendo los problemas y una introducción a Snyk con una demostración.Preguntas abiertas.
Aporta Calidad y Seguridad al pipeline de CI/CD
DevOps.js Conf 2022DevOps.js Conf 2022
76 min
Aporta Calidad y Seguridad al pipeline de CI/CD
WorkshopFree
Elena Vilchik
Elena Vilchik
En esta masterclass repasaremos todos los aspectos y etapas al integrar tu proyecto en el ecosistema de Calidad y Seguridad del Código. Tomaremos una aplicación web simple como punto de partida y crearemos un pipeline de CI que active el monitoreo de calidad del código. Realizaremos un ciclo completo de desarrollo, comenzando desde la codificación en el IDE y abriendo una Pull Request, y te mostraré cómo puedes controlar la calidad en esas etapas. Al final de la masterclass, estarás listo para habilitar esta integración en tus propios proyectos.