Cómo los desarrolladores pueden utilizar pruebas automatizadas de seguridad de aplicaciones para proteger las aplicaciones Vue

Rate this content
Bookmark

Los frameworks de frontend como Vue son vulnerables a entradas no sanitizadas para ejecutar código malicioso. Los patrones que permiten esto se entienden en general, pero aún hay casos en los que tus aplicaciones podrían estar en riesgo. Aprende cómo puedes implementar seguridad de aplicaciones automatizada para mantener tus aplicaciones seguras.

7 min
20 Oct, 2021

Video Summary and Transcription

Hoy, te voy a contar cómo los desarrolladores pueden utilizar pruebas automatizadas de seguridad de aplicaciones para proteger sus aplicaciones Vue. Explicaré qué significa desplazar hacia la izquierda, mostraré un ejemplo de una vulnerabilidad de scripting entre sitios y proporcionaré las herramientas que necesitas para encontrar estas vulnerabilidades antes de la producción. Vamos a ver un ejemplo de nuestra aplicación Vue con scripting entre sitios. Tenemos FontTalk, un foro de mensajes donde los usuarios pueden discutir fuentes y dar estilo a sus publicaciones. Bob inicia sesión y ve una conversación sobre fuentes. Sin saber sobre el scripting entre sitios, su cuenta se ve comprometida. La etiqueta de imagen maliciosa envía su información confidencial al atacante. Para evitar esto, necesitamos hacer cambios en el código.

Available in English

1. Introducción a las pruebas de seguridad de aplicaciones

Short description:

Hoy, voy a contarles cómo los desarrolladores pueden utilizar pruebas automatizadas de seguridad de aplicaciones para proteger sus aplicaciones Vue. Explicaré qué significa moverse hacia la izquierda, mostraré un ejemplo de una vulnerabilidad de scripting entre sitios y proporcionaré las herramientas que necesitan para encontrar estas vulnerabilidades antes de la producción.

Hola a todos. Mi nombre es Nick Teets y soy un ingeniero front-end en StackHawk. Y hoy, voy a contarles cómo los desarrolladores pueden utilizar pruebas automatizadas de seguridad de aplicaciones para proteger sus aplicaciones Vue.

Un poco sobre mí, soy un ingeniero front-end, así que debo admitir que me emociono con las fuentes. También soy el coorganizador del meetup de Jamstack en Denver, donde hablamos de todo desde CMS sin cabeza hasta generación de sitios estáticos. Y cuando no estoy ocupado tocando música o emocionándome con Helvetica, soy músico aquí en Denver.

Hoy, les voy a contar qué significa moverse hacia la izquierda, les mostraré un ejemplo de una vulnerabilidad de scripting entre sitios en una aplicación Vue y luego les daré las herramientas que necesitan para encontrar este tipo de vulnerabilidades antes de llegar a producción.

Entonces, ¿qué significa moverse hacia la izquierda? En pocas palabras, estamos moviendo las herramientas del ciclo de vida del desarrollo de software hacia una etapa anterior del proceso. Ahora hay una variedad de herramientas de seguridad que puedes utilizar cuando estás trabajando en tu rama de desarrollo o tu rama de características que te ayudarán a encontrar vulnerabilidades de seguridad. Cosas como la detección de secretos o la idea de que deberíamos ofuscar las claves de API que utilizamos para comunicarnos con servicios de terceros. El análisis de composición de software, que consiste en analizar los módulos de código abierto que utilizas en tu aplicación y encontrar vulnerabilidades allí. Tenemos pruebas de seguridad de aplicaciones estáticas, que examinan el código real y los archivos de texto de tu repositorio para encontrar vulnerabilidades. Y por último, las pruebas de seguridad de aplicaciones dinámicas. Esto es en lo que StackHawk es realmente bueno, ya que tomamos una instancia en ejecución de tu aplicación, ya sea en el pipeline o en desarrollo local, y encontramos vulnerabilidades de la misma manera en que un actor malintencionado podría explotar tu aplicación.

2. Ejemplo de aplicación Vue con scripting entre sitios

Short description:

Vamos a ver un ejemplo de nuestra aplicación Vue con scripting entre sitios. Tenemos FontTalk, un foro donde los usuarios pueden discutir sobre fuentes y dar estilo a sus publicaciones. Jane inicia la conversación con una etiqueta de negrita, pero también incluye una etiqueta de imagen oculta que envía información sensible a un servicio de terceros.

Así que vamos a ver nuestro ejemplo de nuestra aplicación Vue con scripting entre sitios. Aquí tenemos FontTalk. Este es un lugar donde los usuarios pueden iniciar sesión en un foro y hablar sobre fuentes. Y, por supuesto, les vamos a dar la capacidad de dar estilo al texto que publican en este foro. Así que Jane va a iniciar la conversación y decir: ¿a todos les gustan las fuentes? Vamos a envolver esto en una etiqueta de negrita para enfatizar que estamos aquí para hablar de fuentes, por supuesto. Y lo vamos a publicar. Y puedes ver que tenemos el texto en negrita ahí. El mensaje está disponible para que todos lo vean. Pero luego Jane va a seguir con otra publicación. Vamos a enfatizar lo hermoso aquí. Pero también vamos a incluir esta etiqueta de imagen. Vamos a ocultar esto del usuario. Y cuando esta etiqueta de imagen se cargue, vamos a enviar información sensible de la cuenta a un repositorio que hemos configurado en un servicio de terceros. Así que vamos a guardar esta nota. Y es posible que como usuario que no está muy familiarizado con la web, no te des cuenta de algo, pero si inspeccionas esta parte, puedes ver que aquí está nuestra etiqueta de imagen, que está oculta, y que está accediendo a nuestro

3. Cross-Site Scripting y Contramedidas

Short description:

Bob inicia sesión y ve una conversación sobre fuentes. Sin saber sobre el scripting entre sitios, su cuenta se ve comprometida. La etiqueta de imagen maliciosa envía su información confidencial al atacante. Para prevenir esto, necesitamos hacer cambios en el código.

servicio de terceros con información confidencial de la cuenta. Así que vamos a cerrar sesión como Jane. Y vamos a iniciar sesión como Bob. Y Bob llega aquí, y ve, ya sabes, hay una buena conversación sobre fuentes, y él dice, sí, las fuentes son geniales. Y luego Bob va a salir del chat, porque tal vez no sea una persona de foros de mensajes. Pero lo que no sabe es que el scripting entre sitios ha afectado su cuenta. Así que si vamos a este sueño imposible, este cubo, este punto final que hemos configurado, podemos ver que esa etiqueta de imagen envió la información confidencial de Bob aquí, por lo que nuestra mala actriz Jane puede verla. Ahora ella puede iniciar sesión y publicar como Bob, o tal vez, ya sabes, robar su información de tarjeta de crédito, si ese tipo de sistema se implementara en nuestra aplicación. Lo cual, obviamente, no es bueno. Entonces, ¿qué podemos hacer en el código para evitar que esto suceda? Una cosa que podríamos hacer es ir a nuestra lista de Notas, y en lugar de usar VHTML, que utiliza ese método interno HTML en nuestro elemento, podemos simplemente renderizar la información en esta nota, el valor real. Y si lo comprobamos, podemos ver que hemos expuesto estas etiquetas HTML que las personas están insertando en nuestro foro de mensajes. Así que aquí está esa etiqueta de imagen mala que está enviando esa información, pero esto está eliminando algunas de las características de nuestro genial foro de mensajes sobre fuentes, así que esa no es la solución. Usemos esta biblioteca de HTML sanitizado que se puede escanear con SCA, por supuesto, para eliminar parte de ese HTML malicioso mientras permitimos a nuestros usuarios dar estilo a sus publicaciones. Así que si inspeccionamos este elemento, podemos ver que esa etiqueta de imagen maliciosa se ha eliminado de nuestras publicaciones, y parece que todo está funcionando. Ahora, hay una última cosa que podríamos hacer, como una primera línea de defensa contra los ataques de scripting entre sitios, y eso es agregar el encabezado CSP. Así que si vamos a nuestra terminal, vamos a ejecutar un escaneo de Stackhawk, esto obviamente se implementaría en tu canal de integración y entrega continua cada vez que envíes código, y mientras se ejecuta ese escaneo, vamos a ir a la plataforma de Stackhawk para ver cómo se ve un escaneo finalizado. Aquí está nuestra aplicación que ya hemos registrado, y si hacemos clic aquí, podemos ver que hay un par de hallazgos o vulnerabilidades de encabezado CSP que hemos descubierto. Y cuando hacemos clic aquí, se nos da la capacidad de clasificarlos o marcarlos como falsos positivos o aceptar el riesgo para estos diferentes tipos de vulnerabilidades, y también proporcionamos un poco de texto educativo sobre lo que significa la política de seguridad de contenido. Y así, usando una herramienta como Stackhawk, puedes ver cuáles son algunas de estas vulnerabilidades antes de llegar a producción porque lo ejecutas en un canal. Y me encantaría contarte más sobre la seguridad y VLAPs y Stackhawk, pero nos estamos quedando sin tiempo, así que vamos a reproducir esta guía de agradecimiento. Obtén más información sobre Stackhawk en Stackhawk.com. El artículo de blog del que obtuve inspiración para este ejemplo de vista está disponible en el siguiente enlace. Y si quieres contactarme en Twitter, soy NickTex en Twitter. Pasa por allí, dime que te encantó la presentación, hablemos de música o seguridad o JavaScript. Gracias a Vue por tenerme. Gracias por ver, y esto ha sido increíble. Nos vemos luego.

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

Vue.js London Live 2021Vue.js London Live 2021
34 min
Everything Beyond State Management in Stores with Pinia
Top Content
When we think about Vuex, Pinia, or stores in general we often think about state management and the Flux patterns but not only do stores not always follow the Flux pattern, there is so much more about stores that make them worth using! Plugins, Devtools, server-side rendering, TypeScript integrations... Let's dive into everything beyond state management with Pinia with practical examples about plugins and Devtools to get the most out of your stores.
Vue.js London Live 2021Vue.js London Live 2021
20 min
One Year Into Vue 3
Top Content
Vue 3 may still sound new to many users, but it's actually been released for over a year already. How did Vue 3 evolve during this period? Why did it take so long for the ecosystem to catch up? What did we learn from this process? What's coming next? We will discuss these questions in this talk!
Vue.js London Live 2021Vue.js London Live 2021
8 min
Utilising Rust from Vue with WebAssembly
Top Content
Rust is a new language for writing high-performance code, that can be compiled to WebAssembly, and run within the browser. In this talk you will be taken through how you can integrate Rust, within a Vue application, in a way that's painless and easy. With examples on how to interact with Rust from JavaScript, and some of the gotchas to be aware of.
Vue.js London Live 2021Vue.js London Live 2021
24 min
Local State and Server Cache: Finding a Balance
Top Content
How many times did you implement the same flow in your application: check, if data is already fetched from the server, if yes - render the data, if not - fetch this data and then render it? I think I've done it more than ten times myself and I've seen the question about this flow more than fifty times. Unfortunately, our go-to state management library, Vuex, doesn't provide any solution for this.For GraphQL-based application, there was an alternative to use Apollo client that provided tools for working with the cache. But what if you use REST? Luckily, now we have a Vue alternative to a react-query library that provides a nice solution for working with server cache. In this talk, I will explain the distinction between local application state and local server cache and do some live coding to show how to work with the latter.

Workshops on related topic

Vue.js London Live 2021Vue.js London Live 2021
169 min
Vue3: Modern Frontend App Development
Top Content
Featured WorkshopFree
The Vue3 has been released in mid-2020. Besides many improvements and optimizations, the main feature of Vue3 brings is the Composition API – a new way to write and reuse reactive code. Let's learn more about how to use Composition API efficiently.

Besides core Vue3 features we'll explain examples of how to use popular libraries with Vue3.

Table of contents:
- Introduction to Vue3
- Composition API
- Core libraries
- Vue3 ecosystem

Prerequisites:
IDE of choice (Inellij or VSC) installed
Nodejs + NPM
Vue.js London Live 2021Vue.js London Live 2021
117 min
Using Nitro – Building an App with the Latest Nuxt Rendering Engine
Top Content
Workshop
We'll build a Nuxt project together from scratch using Nitro, the new Nuxt rendering engine, and Nuxt Bridge. We'll explore some of the ways that you can use and deploy Nitro, whilst building a application together with some of the real-world constraints you'd face when deploying an app for your enterprise. Along the way, fire your questions at me and I'll do my best to answer them.
React Summit 2023React Summit 2023
56 min
0 to Auth in an hour with ReactJS
WorkshopFree
Passwordless authentication may seem complex, but it is simple to add it to any app using the right tool. There are multiple alternatives that are much better than passwords to identify and authenticate your users - including SSO, SAML, OAuth, Magic Links, One-Time Passwords, and Authenticator Apps.
While addressing security aspects and avoiding common pitfalls, we will enhance a full-stack JS application (Node.js backend + React frontend) to authenticate users with OAuth (social login) and One Time Passwords (email), including:- User authentication - Managing user interactions, returning session / refresh JWTs- Session management and validation - Storing the session securely for subsequent client requests, validating / refreshing sessions- Basic Authorization - extracting and validating claims from the session token JWT and handling authorization in backend flows
At the end of the workshop, we will also touch other approaches of authentication implementation with Descope - using frontend or backend SDKs.
Vue.js London 2023Vue.js London 2023
137 min
TresJS create 3D experiences declaratively with Vue Components
Workshop
- Intro 3D - Intro WebGL- ThreeJS- Why TresJS- Installation or Stackblitz setup - Core Basics- Setting up the Canvas- Scene- Camera- Adding an object- Geometries- Arguments- Props- Slots- The Loop- UseRenderLoop composable- Before and After rendering callbacks- Basic Animations- Materials- Basic Material- Normal Material- Toon Material- Lambert Material- Standard and Physical Material- Metalness, roughness - Lights- AmbientLight- DirectionalLight- PointLights- Shadows- Textures- Loading textures with useTextures- Tips and tricks- Misc- Orbit Controls- Loading models with Cientos- Debugging your scene- Performance
Vue.js London Live 2021Vue.js London Live 2021
176 min
Building Vue forms with VeeValidate
Workshop
In this workshop, you will learn how to use vee-validate to handle form validation, manage form values and handle submissions effectively. We will start from the basics with a simple login form all the way to using the composition API and building repeatable and multistep forms.

Table of contents:
- Introduction to vee-validate
- Building a basic form with vee-validate components
- Handling validation and form submissions
- Building validatable input components with the composition API
- Field Arrays and repeatable inputs
- Building a multistep form
Prerequisites:
VSCode setup and an empty Vite + Vue project.
TestJS Summit 2021TestJS Summit 2021
85 min
Automated accessibility testing with jest-axe and Lighthouse CI
Workshop
Do your automated tests include a11y checks? This workshop will cover how to get started with jest-axe to detect code-based accessibility violations, and Lighthouse CI to validate the accessibility of fully rendered pages. No amount of automated tests can replace manual accessibility testing, but these checks will make sure that your manual testers aren't doing more work than they need to.