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

This ad is not shown to multipass and full ticket holders
JSNation US
JSNation US 2025
November 17 - 20, 2025
New York, US & Online
See JS stars in the US biggest planetarium
Learn More
In partnership with Focus Reactive
Upcoming event
JSNation US 2025
JSNation US 2025
November 17 - 20, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

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í.

3. Injection and Test Cases

Short description:

La inyección es un riesgo de seguridad importante. Escribir pruebas adecuadas y usar casos de prueba puede ayudar a mitigar este problema. Diseña casos de prueba que simulen atacantes reales inyectando scripts o SQL en campos de entrada. Utiliza el OWASP DemoChop para practicar y aprender de código inseguro. Vamos a revisar un caso de prueba juntos, comenzando con el conteo de NAVBAR y el formulario de inicio de sesión.

Así que este es el rango dos. Y finalmente, donde fui un poco demasiado rápido, y supongo que ya lo adivinaste que este es nuestro punto de enfoque, es la inyección. Si un atacante proporciona una entrada no confiable a tu programa, básicamente, el código del atacante será compilado, interpretado y ejecutado como si fuera tu propio código, lo cual es bastante malo, ¿no es así? Así que sí, estos son los tres principales. La inyección es nuestro enfoque principal y sí, echemos un vistazo a cómo las pruebas pueden ayudarnos en este sentido. Y podrías haberlo adivinado, pero no es un gran problema si no porque estás aquí básicamente para aprender sobre ello. Intentaremos combatir los problemas de seguridad escribiendo nuestras pruebas, escribiendo pruebas adecuadas, usando casos de prueba para cubrir algunos problemas de seguridad. Y en esta charla, uso pruebas de extremo a extremo y Cypress para mis ejemplos, pero trato de ser lo más agnóstico posible. Así que si estás usando Playwright, Test Buffet, o incluso eres lo suficientemente valiente como para usar Selenium, lo siento, no importa qué marco de automatización de pruebas uses, en la mayoría de los casos, no todos, pero en la mayoría de los casos, puedes hacerlo en otros marcos también. Y sí, echemos un vistazo a cómo diseñar nuestros casos de prueba, especialmente para la inyección. Porque es un ejemplo perfecto porque sí, es fácil de reproducir, ¿verdad? Como las pruebas de extremo a extremo básicamente simulan usuarios reales, pueden simular un atacante real. Y sí, mis pensamientos sobre eso serían como tener una prueba negativa donde básicamente intentas inyectar un script o algún SQL en algún campo de entrada, cosas así, para un formulario de muestra, por ejemplo, y como siguiente paso, tal vez incluso aleatorizar los campos de entrada que elijas, ¿verdad? Bueno, veamos si esto está funcionando. UvaSp de alguna manera, afortunadamente, nos ayudará en este sentido porque tienen un DemoChop. Es una tienda en línea, que es insegura y un poco sofisticada por diseño. Así que está rota. No es segura. No la uses en producción, pero tal vez ejecútala en un contenedor Docker y prueba todas las cosas que hicieron mal. Incluso tienen desafíos para practicar. Así que básicamente, hackea la tienda. Y en esta charla, de hecho, haremos dos desafíos como casos de prueba. Sí, el primero. Vamos por la prueba. Así que como ves, iremos por esta letra del menú, que es el conteo de NAVBAR. Debería ser visible, renderizado para que podamos interactuar con él, y lo hacemos clic para abrir el menú. Luego, habrá un punto para iniciar sesión, que copié de antemano. Igual que debería ser visible, así que está renderizado, y quiero hacer clic en él para llegar al formulario de inicio de sesión, ¿verdad? Bien, veamos si la prueba ya lo está haciendo. Bien, ahí vamos. El formulario de inicio de sesión está ahí. Obtengamos el selector copiándolo del corredor de pruebas aún visible. Y luego, queremos escribir todas las cosas que necesitamos, como iniciar sesión. No estamos usando un correo electrónico o algo válido, pero iremos por una pequeña parte de una consulta.

4. Injection Testing and Content Security Policies

Short description:

Para probar vulnerabilidades de inyección, escribe pruebas negativas que simulen inyecciones adicionales en los campos de entrada. Otro enfoque es probar las políticas de seguridad de contenido usando Cypress. Consulta el artículo de Gleb Bamutov para más detalles.

Esta consulta se usará básicamente en lugar del problema, un problema, y obtendrá el primer usuario de la base de datos para iniciar sesión. En este sentido, la contraseña no importará porque lo haremos mediante integración SQL, exactamente, como podrías haber adivinado. Vamos a enviar el formulario. Para tener una prueba adecuada, que debería fallar, quiero tener un mensaje de error allí también. Echemos un vistazo. Quiero hacer clic en él, habilitarlo, para que podamos iniciar sesión.

Estaba un poco confundido. Ahora, solo quiero tener un inicio de sesión inválido para tener un mensaje de error para probar un correo electrónico o contraseña inválidos. Veamos si el error aparecería. No lo hará, pero por supuesto, vamos por una prueba adecuada. Intentemos no usar errores tipográficos aquí. Tengo un error tipográfico allí. Volvamos y ejecutemos la prueba. Debería fallar ahora porque, como ves, hemos iniciado sesión. Podemos ver la cesta del usuario. Podemos ver el mensaje de la cuenta. Podemos ver el menú. Podemos ver todo. Bastante malo, ¿verdad?

Si quieres detectar inyecciones mediante una prueba, puedes intentar escribir una prueba negativa, que es una prueba que escucha el comportamiento de error y trata de ver básicamente qué sucede si haces una inyección adicional dentro de un campo de entrada. También podrías optar por otra forma de prueba cuando se trata de políticas de seguridad de contenido, lo cual es bastante genial, como la prueba de CFP usando Cypress. Este ejemplo es tomado por Gleb Bamutov, quien es un autor maravilloso escribiendo un maravilloso artículo. Si quieres echarle un vistazo, hay un código QR. También puedes verificar los encabezados CSP. Básicamente, el CSP, política de seguridad de contenido, definirá fuentes confiables para el contenido, que está permitido cargar, así que básicamente lo que está listado.

5. Content Security Policies and Access Control

Short description:

Para probar las Content Security Policies (CSP), habilita la configuración de Cypress y simula ataques de seguridad. Usa herramientas como FGA o OpenFGA para RBAC y simula un usuario con permisos insuficientes para probar el control de acceso. En el ejemplo de ovas produce, incluso después de iniciar sesión, pudimos acceder a la página de administración, lo que indica un control de acceso roto.

Para probar eso, puedes optar por la configuración de Cypress para habilitarlo. La lista de permitidos de CSP experimental necesitaría listar los encabezados que deseas revisar. Entonces, básicamente puedes verificarlo. Tal vez en una prueba de API, donde intentas verificar los encabezados que están allí y son válidos, o puedes optar por un caso de prueba normal como aquí, donde básicamente simulas un ataque de seguridad mediante validaciones de CSP, donde deberías verlo bloqueado. Si deseas tener más detalles, porque quiero ser consciente de tu tiempo, intenta echar un vistazo al artículo de Gleb. Es bastante genial.

Bueno, sería realmente malo si no cubro el problema número uno, ¿verdad? Control de acceso roto. Aunque la mayoría de las cosas allí serán hechas por el backend, como los roles de usuario. Puedes pensar en usar herramientas como FGA o OpenFGA para tener un RBAC, como básicamente control de recursos, control de acceso, la solución en su lugar. También puedes echar un vistazo a las pruebas, porque escribir un caso de prueba adecuado puede ayudarte aquí también. Lo siguiente es simular un usuario con permisos insuficientes intentando hacer algo o intentando leer cosas, información que no se les permite leer. Así que, sí, echemos un vistazo a eso.

Volveré al ejemplo de ovas produce. Así que, vamos a echar un vistazo. Allí, hacemos el inicio de sesión basado en la primera prueba como hicimos antes. Lo puse en un comando personalizado para ahorrarnos tiempo. Visito la tienda y quiero ir al panel de administración, al que deberíamos poder llegar como un cliente normal de la tienda, ¿verdad? Así que, obtengamos la tarjeta que tenemos, que es básicamente la misma que en el formulario de inicio de sesión también. Debería ser visible para que la página esté cargada, podamos interactuar. Y luego veamos si estamos bloqueados. Entonces, aparece un error 403 u otro mensaje de error. Veamos si esto realmente está sucediendo. Así que, veamos cuando lo estoy probando por mi cuenta. Sí, 403, no tienes permitido acceder a esta página, así que podemos guiarnos por este mensaje de error. Bien, vamos. Echemos un vistazo allí. ¿Qué pasa si estamos ejecutando la prueba? Así que, vamos por control de acceso roto. Iniciaremos sesión y veremos la vista general de administración, ¿verdad? Esto es bastante subóptimo, digamos así. Así que, sí, la prueba fallará, lo cual es válido porque queríamos tener una prueba negativa. Pero como ves, pudimos acceder a la página de administración. No estamos bloqueados al hacerlo.

6. Test Automation and Cryptographic Failures

Short description:

La automatización de pruebas en Cypress puede ayudar a identificar fallos criptográficos al adherirse a la política de mismo origen y hacer que las pruebas fallen si hay un fallo de cifrado en la página.

La prueba es un mensajero que nos permite ver que hay un problema. Bien, algunas palabras pequeñas para fallos criptográficos también. Y aunque esto es más un tema de backend también, la automatización de pruebas puede ayudarte con esto también. Así que, está incorporado básicamente si usas Cypress, por ejemplo. Como Cypress funciona desde dentro del navegador, necesitan adherirse a las reglas de la política de mismo origen lo que llevará a Cypress a dar error cada vez que intentes navegar de regreso a un sitio HTTP cuando estabas usando HTTPS antes. Así que básicamente, las pruebas de Cypress fallarán si tienes un fallo de cifrado en tu página, lo cual es bastante genial, ¿verdad? Así que no necesitamos escribir nada como un caso de prueba o algo así.

7. Security Testing Tools and Pipeline Integration

Short description:

Las bases de datos CVE y herramientas como Cypress y Overstep pueden ayudar a manejar problemas de seguridad en las pruebas. Overstep también proporciona recomendaciones para herramientas de código abierto como análisis de código y ayudantes IADE. Incorporar pruebas de seguridad en una pipeline implica aprender las vulnerabilidades de la aplicación, crear un plan de pruebas, ejecutar y analizar los resultados, y repetir el proceso con nuevos casos de prueba.

Pero aún así, podrías decir, bueno, las pruebas tienen un gran defecto, ¿verdad? Bueno, ¿cómo manejamos problemas de seguridad que no conocemos en este momento? Obviamente, las bases de datos CVE están ahí para eso, pero no siempre podemos revisarlas, ¿verdad? Entonces, ¿cómo podemos manejar tales problemas?

Bueno, hay herramientas que te pueden ayudar. Y en este sentido, todavía haré algunas herramientas como mencionará Hanne, porque sería difícil hacerlo sin ellas. Porque en la prueba, siempre probarás las cosas que buscas, que tú como desarrollador escribes dentro de la prueba. Así que en este sentido, echa un vistazo a esas. Pero habrá algunas que son de código abierto, y al menos planes comunitarios donde no necesitas pagar dinero por ellas. Así que la primera, que es mi favorita con una salvedad, es Cypress y Overstep. Así que es un plugin para Cypress combinándolo con Overstep, y es bastante antiguo. Así que con suerte, yo mismo o alguien en el público tendrá algo de tiempo más tarde para básicamente actualizarlo, porque ayuda mucho tener pruebas de seguridad dentro de tus aplicaciones. Pero por ahora, al menos es un gran ejemplo de cómo hacerlo. Incluso puedes encontrar pruebas de ejemplo en este repositorio también. Así que no nos hace daño echar un vistazo, ¿verdad?

Y aparte de eso, Overstep tiene maravillosas recomendaciones para herramientas, por ejemplo, análisis de código, ayudantes IADE, todo tipo de herramientas, que son en su mayoría de código abierto, o al menos tienen un plan comunitario. Así que échales un vistazo, si estás interesado en aprender. Por último, pero no menos importante, introduciré una pequeña lente de aseguramiento de calidad QA a esta cuestión de probar la seguridad con marcos de prueba de método básico, básicamente cómo incorporar la prueba de seguridad dentro de mis planes de prueba, pipelines o flujos de trabajo. Y primero y ante todo, estoy usando pruebas de extremo a extremo como ejemplo aquí, debido al tiempo limitado y es básicamente el tipo de prueba en el que tengo más experiencia. Pero puedes usar pruebas unitarias, pruebas de integración, pruebas de componentes también. Así que no estás limitado a pruebas de extremo a extremo si no quieres, especialmente cuando se trata de casos de prueba de API. Incluso podría ser mejor hacer pruebas de integración o pruebas unitarias porque son básicamente más rápidas y más aisladas. Así que por favor no te sientas limitado a cada prueba, ¿de acuerdo?

Así que cuando se trata de incorporar pruebas de seguridad en mi pipeline, vamos así. Primero, aprenderé mi aplicación, como hablamos antes, y las vulnerabilidades que son relevantes para mi aplicación para saber qué probar. Luego elaboraré un plan de pruebas. Así que, ¿qué capas quiero incluir? Tal vez unitarias, integración, E2E, lo que sea. Tal vez haga un pequeño análisis de riesgos para saber, de acuerdo, qué vulnerabilidades son más importantes cubrir primero o cubrir más a menudo. Qué casos de prueba necesito escribir para el riesgo, y luego escribir mis casos de prueba, por supuesto. Después, los ejecutaré, tal vez localmente, tal vez ya dentro de mi CI y analizaré el resultado para obtener algunos aprendizajes para ver si necesito reforzar otras pruebas o dejar fuera algunas otras, solo analizarlas y aprender de ellas. Y luego pienso en incluir herramientas de prueba si las necesito y combinarlas. Y por último, lo repetiré. Así que repetir ambas reglas, pero también las ejecuciones de prueba. Así que tengo mi pipeline programada para cada noche, cuando, por ejemplo, el tiempo no es tanto un problema. Y luego básicamente, ejecutamos esas pruebas en un cierto ritmo, pero también básicamente repito mi plan también. Así que piensa en nuevos casos de prueba, ejecútalos, aprende de ellos.

8. Test Complement and Conclusion

Short description:

Las pruebas son un complemento poderoso para la seguridad de la aplicación, ayudando a identificar vulnerabilidades. 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. Mi nombre es Ramona Schwering, defensora de desarrolladores en Offseral. Conéctate conmigo a través de mi blog, y espero verte en otra conferencia pronto.

Sí, la forma en que solías escribir pruebas, ¿verdad? Así que creo que las pruebas son un complemento maravilloso para mantener tu aplicación segura. Son el mensajero perfecto si estás usando casos de prueba adecuados, tal vez para casos de inyección, para control de acceso roto como una prueba negativa, para seguridad de contenido, encabezados de políticas, cosas así. Para unirse a la implementación de mejores prácticas en la aplicación, construyéndola de manera robusta y segura.

Creo que el atacante no puede eludir nuestras defensas como este musulmán, no podemos eludir esta defensa de nuez, ¿verdad? Un zombi no puede saltar sobre ella. Así que mi deseo para mis aplicaciones y las tuyas también es que se vean así. Muchas defensas diferentes manteniendo a todos los atacantes, todos los problemas, todas las vulnerabilidades a raya. Para que tus clientes o tus usuarios se sientan seguros cuando se trata de tu aplicación y confíen en ti.

Si hay como tres o cuatro partes que quiero que recuerdes de esta charla, es esto. La automatización es un complemento maravilloso para tener un mensajero maravilloso que te informe si tienes problemas de seguridad dentro de tu aplicación. Los pasos simples en las automatizaciones de pruebas son más útiles y son básicamente frutos al alcance cuando se trata de tener una línea de defensa de pruebas, ¿verdad? Así que escribe casos de prueba, utiliza tus características de los marcos de prueba. Creo que estos pasos son simples de implementar. Combina tus propios casos de prueba que escribes básicamente de tu propia mente. Y tal vez algunas herramientas para cosas que no conoces para tener defensas maravillosas. Y considera usar todos los tipos de pruebas dentro de tu plan de pruebas. No solo en tendencia, sino también unitarias o de integración o de componentes por así decirlo. Si logramos hacer esto dentro de una aplicación, estoy feliz, pero ¿quién soy yo? Mi nombre es Ramona Schwering. Trabajo como defensora de desarrolladores en Offseral y puedes encontrar todo sobre mí básicamente en mi blog. Puedes verlo en este código QR. Si tienes alguna pregunta, estaré en línea en el chat o en Discord. Y espero poder verte en otra Good Nation Conference en persona la próxima vez. Así que aparte de eso, nos vemos pronto. Espero que tengas un maravilloso tiempo de Navidad. ¡Adiós!

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.
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.
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.

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
Workshop
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
Workshop
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.