Micro-Frontend Security Guide

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

Los Micro Frontends están en todas partes: en el cliente, en el servidor y en el edge. Muy a menudo, la escalabilidad de los micro frontends está determinada por la libertad e independencia de los equipos que los utilizan. Esto puede llevar a problemas ya que potencialmente código arbitrario entra en las aplicaciones en tiempo de ejecución, planteando la pregunta de qué vulnerabilidades potenciales existen y cómo mitigarlas.


En esta sesión, escucharás sobre algunas de las vulnerabilidades más frecuentes que aparecen en proyectos del mundo real que utilizan micro frontends. Verás qué puedes hacer para deshacerte de ellas y evitar errores que conduzcan a problemas de seguridad. La misión de esta charla es entregar a velocidad y escala, pero hacerlo sin comprometer la seguridad.

This talk has been presented at JSNation US 2024, check out the latest edition of this JavaScript Conference.

Florian Rappl
Florian Rappl
23 min
21 Nov, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Bienvenido a una sesión sobre micro-frontends y seguridad. Esta charla discute las vulnerabilidades en los sistemas de micro-frontend, incluyendo inyecciones, diseño inseguro y configuración de seguridad incorrecta. También explora fallos de identificación y autenticación, y sugiere estrategias de mitigación como el uso de cookies de sesión y canales HTTP seguros. La charla destaca la importancia de implementar un gateway para mejorar la seguridad y aborda preocupaciones sobre el diseño inseguro. Enfatiza la verificación de la integridad de los archivos JavaScript y la prevención de inyecciones de código. También se discute el uso de variables de entorno y la mala gestión de la configuración, junto con la importancia del escaneo y prueba de vulnerabilidades. La charla concluye enfatizando la necesidad de autenticidad y monitoreo en el desarrollo de micro-frontend.
Available in English: Micro Frontends and Security

1. Introduction to Micro-Frontends and Security

Short description:

Bienvenidos a la sesión sobre micro-frontends y seguridad. Proporcionaré información sobre el desarrollo de soluciones de micro-frontend con la seguridad en mente. Comencemos observando el OWASP top 10, una lista de vulnerabilidades críticas de seguridad en aplicaciones web. Discutiré cuatro temas de esta lista y explicaré cómo mitigar las vulnerabilidades y vectores de ataque.

Hola a todos, y bienvenidos a la sesión sobre micro-frontends y seguridad. Espero que hayan tenido una gran conferencia hasta ahora, y espero también traerles ahora algunas ideas sobre cómo desarrollar su solución de micro-frontend con la seguridad en mente.

Antes de comenzar, solo unas pocas palabras sobre mi persona. Soy Florian, o en resumen, simplemente Flo. Soy un arquitecto de soluciones que trabaja para una empresa más pequeña aquí en el área de Múnich en Alemania. Estamos especializados en la creación de plataformas IoT y aplicaciones web distribuidas en general. También realizamos algunas masterclass y revisiones. Así que si tienen, digamos, cualquier tipo de demanda en esas áreas, quieren alguna consultoría general o están pensando en adentrarse en los micro-frontends, entonces siempre siéntanse libres de contactarme o enviarme un mensaje en LinkedIn. Ahora, suficientes palabras sobre mí. Vamos a sumergirnos directamente en el tema.

Y una cosa que siempre me gusta, por supuesto, mostrar, y esto será, digamos, la guía también para la sesión de hoy, es echar un vistazo al OWASP top 10. Así que esta es una lista de las vulnerabilidades de seguridad más, digamos, críticas y más utilizadas en el sector de aplicaciones web. Y actualizan esta lista con bastante regularidad. Y lo que pueden ver aquí es la lista más reciente disponible. Y he traído cuatro temas de esta lista donde podemos, digamos, identificar lo que generalmente sale mal en las soluciones de micro-frontend y lo que podemos hacer para mitigar esas vulnerabilidades y vectores de ataque que naturalmente ocurren.

2. Vulnerabilities in Micro-Frontend Systems

Short description:

Hablemos de inyecciones, diseño inseguro y configuración incorrecta de seguridad en sistemas de micro-frontend. Las inyecciones son una vulnerabilidad común debido a la composición dinámica de micro-frontends en tiempo de ejecución. El diseño inseguro permite la ejecución de código no autorizado, mientras que la configuración incorrecta de seguridad se refiere a configuraciones del sistema que pueden llevar a ataques o modificaciones no autorizadas durante la transmisión de datos.

Así que comencemos ahora mismo con el tercero, que son las inyecciones. Los sistemas de micro-frontend son muy a menudo muy abiertos a ataques de inyección porque esto es de lo que se tratan los micro-frontends. Estamos inyectando código que, digamos, no está directamente compuesto en tiempo de construcción, sino que se compondrá en tiempo de ejecución. Muy naturalmente, tendrás que enfrentar ataques de inyección o vectores de ataque que necesitas mitigar. Y vamos a echar un vistazo a eso.

El otro área es mirar el diseño inseguro porque muy a menudo, por supuesto, te abres con estas, digamos, composiciones en tiempo de ejecución a un diseño inseguro, lo que significa que de repente permites tal vez a otros ejecutar su código, lo cual al principio parece bien. Pero, ¿cómo puedes asegurar que el código que fue publicado por alguien ahora es realmente el código que fue publicado por esta, sí, persona de confianza? Y muy similar, pero por supuesto, ligeramente diferente, es la configuración incorrecta de seguridad. Así que aquí tratamos en un área donde decimos, ¿cómo podemos configurar el sistema de tal manera que aunque necesitábamos abrir la puerta en algunas áreas, no esté tan abierta como, bueno, potencialmente puede estar, de modo que, por ejemplo, puedan ocurrir ataques de intermediarios, o que pueda haber algunas modificaciones en el camino desde, digamos, un servidor al navegador del usuario, por ejemplo.

3. Identification and Authentication Flaws

Short description:

Hablemos de fallos de identificación y autenticación en sistemas de micro-frontend. La autenticación basada en tokens es un método popular, a menudo utilizado con OAuth2 y JWTs, que permite a múltiples sistemas verificar la autenticación del usuario. Sin embargo, puede haber vulnerabilidades, como el envío de tokens a sitios maliciosos. Las estrategias de mitigación incluyen el uso de cookies de sesión, establecer políticas al mismo sitio y asegurar canales HTTP seguros. Al implementar estas medidas, se elimina la necesidad de distribuir tokens de autenticación entre micro-frontends, y el navegador maneja la autenticación automáticamente.

Y lo que quiero comenzar con, y esa será el primer área que miramos, es esencialmente, bueno, los buenos y viejos fallos de identificación y autenticación. Entonces, ¿cómo puedes asegurar que autenticas a tus usuarios, y estos son realmente los usuarios que queremos tener, queremos ver, además, por supuesto, los datos, potencialmente, digamos, tokens, por ejemplo, no se pierden, o llegan, bueno, a manos de alguien con quien no quieres compartir el token. Así que echemos un vistazo allí, y comencemos con los fallos de autenticación.

El vector tecnológico que traje para la charla de hoy, solo tenemos 20 minutos, así que necesito ser rápido, es que usamos autenticación basada en tokens. Hay más vectores tecnológicos, pero yo, todas estas secciones que acabamos de cubrir, solo mencionaré un vector tecnológico para cada una. Ahora, para el vector tecnológico que seleccioné aquí, la autenticación basada en tokens es muy popular, ¿verdad? Si creas una aplicación de una sola página, entonces potencialmente usas un mecanismo como OAuth2 con un JWT, que es un token que generalmente es sin estado, por lo que puedes simplemente transportarlo. Y lo bueno es que puede ser creado por un sistema, pero múltiples sistemas pueden leerlo y pueden verificar que este es de hecho un usuario que fue autenticado correctamente por este único sistema que lo creó.

Bien, hasta ahora todo bien, eso suena genial, pero si tienes un sistema de micro-frontend, por supuesto, necesitas de alguna manera distribuir este JWT, por ejemplo, y aquí es donde comienzan los problemas, ¿verdad? Porque incluso si confías en todos tus micro-frontends y todas las cosas que aún hablaremos en esta sesión son, digamos, respetadas, quiero decir, todavía podría haber, digamos, un problema de implementación ocurriendo aquí. Y entonces, si este problema ocurre, podría ser, pero lo que sea, digamos, error que se cometió allí que envías el token como una solicitud a, digamos, un servidor web al que no deberías enviarlo. Esperemos que, por supuesto, entonces este servidor web no haga nada con esta información, pero en el peor de los casos, por supuesto, puede aparecer que este es también un servidor web malicioso. Tal vez todo este ataque fue de alguna manera, digamos, diseñado y ahora el token de tu usuario terminó en manos de un actor malicioso. Así que, si miramos eso desde un punto de vista diagramático, lo que ves aquí, tenemos nuestro sitio que está en el rectángulo azul y luego, por supuesto, estamos ejecutando tres micro-frontends en sus respectivos colores naranja, púrpura y verde. Y lo que ves es que, bueno, naranja y verde están bien. Están enviando el JWT a sus respectivas APIs, pero púrpura no lo está enviando a la API púrpura, sino a algún sitio malicioso aquí. Ahora, el sitio malicioso es, digamos, el propietario de ese JWT. Y eso no es realmente lo que queremos tener. Entonces, ¿qué podemos hacer aquí? ¿Cómo podemos mitigar eso? Bueno, hay varias cosas que hacer, pero siempre me gusta señalar una de las soluciones más simples, y en mi opinión, aquí está, simplemente usar cookies de sesión. Especialmente si estableces, por supuesto, la política al mismo sitio, lo que deberías hacer. Así que, restringes esto. Otra cosa que deberías hacer aquí es tenerlas solo HTTP y todos los canales HTTP seguros. Entonces estás realmente, digamos, bien. Así que, las cookies solo se intercambian en el mismo dominio bajo la circunstancia de que no es, digamos, visible dentro de tu código JavaScript. Y solo se intercambia, digamos, cuando tienes un canal seguro abierto. Así que, todo está genial entonces y no necesitas tener el token de autenticación. No necesitas distribuirlos entre tus micro-frontends.

4. Security Measures: Gateway and Insecure Design

Short description:

La introducción de un gateway entre el sitio web y las APIs de backend mejora la seguridad al gestionar sesiones y reenviar solicitudes con JWTs. Al eliminar la necesidad de tokens y la actualización de tokens, el frontend se vuelve más simple y seguro. Sin embargo, un diseño inseguro aún puede presentar riesgos, como ataques de man-in-the-middle o almacenamiento inseguro de micro frontends.

Así que, bastante bien. Estamos listos aquí. Y si miras cómo el diagrama cambia, ahora ves que hay este gateway que ahora está entre el sitio web que está ejecutándose y las respectivas APIs de backend. Y el trabajo de este gateway que introdujimos aquí es doble. Por un lado, es, por supuesto, el guardián de las sesiones. Así que, recibe las sesiones y luego, por supuesto, puede hacer algo con estas sesiones. Por ejemplo, intercambiar la sesión por un JWT. Y la segunda cosa es que luego hace proxy de la solicitud a algún destino objetivo. Así que, generalmente es un proxy inverso y toma rutas que no, digamos, resuelve directamente. Pero luego hace proxy, por supuesto, detecta cuál es el objetivo. Que debería ser, por supuesto, un objetivo que configuramos previamente. Y luego simplemente reenvía el respectivo JWT con el resto de los detalles de la solicitud al objetivo. Así que, bastante bien. Y si ahora fueras a un sitio malicioso, quiero decir, no pasaría nada porque, bueno, la cookie no se envía aquí. Y, sí, no te importa, esencialmente. Aún no deberías ir allí. Pero, quiero decir, el vector de ataque está mitigado. Genial.

Ahora, en Codeform, lo que podríamos ver aquí es que teníamos un fetch antes y este otro servicio mycompany.com. Bueno, ahora simplemente vamos a API slash otro servicio, y ahora el gateway sabría que, por ejemplo, la solicitud final debería ser enviada a otro servicio de mycompany.com. Pero la parte importante, nuevamente, es que no mencionamos aquí un dominio porque debería ir al mismo origen. Así que, el dominio es implícito en este fetch. Y no necesitamos tener, ahora, este token. Así que, tampoco necesitamos preocuparnos de, por ejemplo, una actualización de token. Así que, en general, nuestro frontend ahora es un poco más simple que antes y también más seguro. Diría que siempre es una gran ventaja.

Pero hablando de, por supuesto, tener un frontend seguro, el diseño inseguro es el próximo problema que podría ocurrir, ¿verdad? Así que, ¿cómo podemos asegurar que no haya, bueno, al menos ningún ataque de man-in-the-middle desde, digamos, la fuente donde almacenamos nuestro micro frontend hasta el navegador? Ahora, hay varias razones por las que esto podría ocurrir, ¿verdad? Podría no ocurrir ni siquiera en, digamos, el canal de transporte entre, digamos, el punto de almacenamiento del micro frontend y el navegador. Pero podría incluso ocurrir que el almacenamiento, digamos, en sí mismo sea inseguro. Así que, no sé, alguien perdió la contraseña de, digamos, un Azure Blob Storage y localizas tu micro frontend allí. Ahora, por supuesto, si esa clave de acceso al Azure Blob Storage cae en las manos equivocadas, el contenido podría ser cambiado.

5. Integrity Verification and Injection Prevention

Short description:

Para asegurar la integridad de los archivos JavaScript en micro-frontends, se pueden usar dos enfoques: firma de código con claves públicas y privadas, o usar la función hash para transportar la integridad del archivo. Al aprovechar un servicio de descubrimiento central, el navegador puede verificar la integridad del archivo recibido y bloquear JavaScript modificado. Otra preocupación de seguridad es la inyección, que puede mitigarse mediante el sandboxing en Node.js usando el módulo VM, restringiendo el acceso a recursos sensibles y previniendo la inyección de código.

Pero hay una manera o hay múltiples maneras, nuevamente, de mitigar un escenario, como se describe aquí, donde dices, oh, ahora en lugar de obtener el micro frontend púrpura o el original púrpura, obtenemos este código JavaScript modificado. Entonces, las dos formas de hacerlo, y me gustaría hablar más sobre la última aquí, es tener firma de código, lo que significa que usas un enfoque que es muy similar a un JWT. Tú, digamos, tienes una clave pública y una privada, y a través de la clave privada, puedes, digamos, junto con, por ejemplo, el hash, poner algo en tu código que diga, bueno, si esto se cumple, el código está debidamente firmado, por lo que puedes leerlo más tarde, el código en sí todavía es totalmente legible, y junto con la clave pública, verificas que esto no ha sido alterado. Pero también hay una manera más simple, por lo que, por supuesto, eso también hace algunas suposiciones, y eso es simplemente transportar la integridad del archivo JavaScript, y esto es esencialmente solo la función hash utilizada en los contenidos binarios del archivo. Ahora, si obtenemos, por ejemplo, junto con la referencia que usualmente tenemos a un micrófono, esta integridad, entonces podemos, por supuesto, usarla para también verificar que el contenido no ha sido alterado. Cómo funciona eso es que usualmente tienes un servicio de descubrimiento de micrófono central, y colocas esto en el medio de tu arquitectura, de tal manera que tu aplicación no solo, digamos, obtenga las referencias al JavaScript, sino que también obtenga estos valores de integridad, y luego puedes instruir al navegador para que realmente use los valores de integridad, y asegurar, por lo tanto, que solo si no han sido alterados, se ejecutarán. Así que, bastante bien, y el navegador, en este caso, bloqueará el JavaScript modificado porque ve que hay una discrepancia entre lo que el servicio de descubrimiento dijo, lo que se subió originalmente, por supuesto, y lo que realmente recibimos. Y nuevamente, no importa si lo recibimos porque hay un problema con el canal de transporte, o porque alguien podría alterar el almacenamiento de los archivos. Y para nosotros, es algo bueno. En forma de código, podría verse así. Entonces, la primera parte es la respuesta de un servicio de descubrimiento. Nos dice el nombre del micrófono, la versión, también nos da, por supuesto, una referencia a él, y luego, lo más importante, nos da el valor para la integridad. Finalmente, si queremos ahora incrustar esto, lo pondremos en una etiqueta de script, y esto no estaría cableado como lo vemos aquí. Por supuesto, todo esto se hace programáticamente, pero la parte realmente crítica es que usamos el atributo de integridad que ya está, digamos, entendido por todos los navegadores evergreen, y estamos bien. El navegador no bloqueará la ejecución de este archivo si detecta que la integridad no se cumple. Muy bien, entonces, otro problema ha sido resuelto. Esto es genial. Quedan solo tantos y tantos, pero veamos los problemas uno a la vez, y continuemos con la inyección, ¿verdad? Como ya se mencionó, la inyección es algo que quieres tener, pero quieres restringirlo tanto como sea posible, siguiendo, por supuesto, el principio de menor privilegio, que no lo abras innecesariamente, sino solo hasta donde necesites abrirlo. Ahora, el vector de ataque que vemos en este aspecto es, bueno, por supuesto, podemos construir un vector de ataque en el navegador, pero tal vez cambiemos un poco aquí y digamos que ejecutamos microformance en el servidor. Ahora, aquí, por supuesto, tenemos bastantes vectores de ataque críticos que ocurren muy naturalmente porque, bueno, todo se ejecuta en nuestro, por ejemplo, servidor, por lo que podríamos tener acceso allí a alguna base de datos SQL. Podríamos acceder aquí a una caché de Redis o lo que sea. Así que, muchos, muchos recursos, las variables de entorno, que generalmente se usan y, por ejemplo, obtienen el acceso a algo como la base de datos SQL, son muy, muy sensibles. Así que, al final del día, lo que podríamos decir, si hay algún código inyectado, que, por ejemplo, puede entonces leer variables de entorno, también podría enviarlo a algún lugar. Ahora, aún podríamos argumentar, tal vez podamos seguir un modelo como DNO y restringir solicitudes HTTP no deseadas, pero digamos que somos Node.js, no tenemos tales opciones. Claro, aún podríamos proteger el servicio, pero luego hay muchos otros vectores aquí. Entonces, ¿cómo podemos prevenir esto en primer lugar? La respuesta en Node.js es que podemos usar sandboxing con el módulo VM. Esencialmente, esto nos permite realmente solo determinar qué cosas deberían ser accesibles desde un módulo cuando lo ejecutamos. Esto es genial porque entonces, por supuesto, recursos como, por ejemplo, acceder a fetch o acceder a alguna dependencia de terceros que pueda tener acceso a fetch pueden ser severamente restringidos, y no necesitas preocuparte por ninguno de esos. Aún mejor, puedes restringir desde el principio. Ni siquiera necesitas tener acceso, por ejemplo, a process EMV.

6. Environment Variables and Misconfiguration

Short description:

Para evaluar módulos con variables de entorno específicas, utiliza el módulo VM para crear un contexto. Restringe el acceso a recursos sensibles como process EMV y custom require. Establece un tiempo de espera para limitar el tiempo de ejecución del script. Evita la mala configuración adoptando estándares web e implementando una política de seguridad de contenido para restringir la ejecución de código arbitrario.

Puedes simplemente proporcionar tus propias variables de entorno solo para la evaluación de este módulo. Entonces, si miras un ejemplo aquí, y esto es realmente un ejemplo simple, simple, simple de lo que puedes hacer, pero para mostrarlo es que usamos del módulo VM para crear contexto y ejecutar en contexto, crear contexto, para crear un nuevo contexto de evaluación. Ponemos todo lo que el módulo necesita saber, cosas generales básicas como encontrar el nombre del trato, pero luego, por supuesto, tal vez también fundamentos de JavaScript como buffer, JSON, etcétera. Y luego la parte respectiva donde se pone interesante es process y require, ¿verdad? Porque el proceso en sí, entonces esta cosa tiene realmente algunas, bueno, digamos implicaciones sobre lo que podrías, bueno, saber en tu módulo. Entonces, deberías al menos proporcionar algo aquí, pero deberías, por supuesto, restringir algo como process EMV. Entonces, lo que vemos aquí, esto podría ser un buen punto de partida, pero aconsejaría no simplemente pasar todas las variables de process EMV. Así que esto es solo, digamos, tal vez un pequeño ejemplo de anti-patrón. Y la otra cosa es, por supuesto, tener la API completamente hecha y el custom require, no entramos en detalles aquí, pero potencialmente querrás permitir el uso de ciertas cosas, pero en general, no querrás tener, digamos, tal vez require cualquier cosa allí porque eso podría usarse para, por supuesto, entrar en territorio no deseado nuevamente. Y finalmente, si estás ejecutando contexto, la parte interesante es que puedes establecer un tiempo de espera que, bueno, esencialmente limita tu, cuánto tiempo puede ejecutarse un script. Y eso también es bueno porque no quieres que scripts deshonestos detengan tu servidor.

Muy bien. Entonces, la última sección de la que quiero hablar es la mala configuración en general. Aquí, el consejo general que quiero darte de antemano es siempre intenta usar tanto de los estándares web como sea posible. Entonces, si sabes, hay una cierta cosa, como tomemos course. No estoy hablando de course hoy, pero no deberías intentar evitarlo. Deberías adoptarlo y deberías más bien pensar, ¿cómo puedo usar mi course para encajar en mi solución de micro-formato y para seguir abriendo la puerta tanto como debería ser posible, pero no, bueno, tanto como sea necesario, pero no tanto como sea posible. Muy bien. Entonces, intentemos resumir esto. El vector de ataque que veo aquí es un script de terceros que, por supuesto, tenemos muchos. Usualmente tenemos muchas dependencias y tal script podría contener, por ejemplo, un key logger, ¿verdad? Quiero decir, no sabes cómo siempre hay paquetes NPM que se han vuelto deshonestos. Y siempre hay un poco de retraso hasta que la comunidad descubre que hay algo realmente malo sucediendo aquí. Y entonces, esto podría ser algo con lo que te encuentres. Simplemente actualizas tus dependencias y de repente tenemos un script deshonesto allí. Así que ni siquiera estamos afirmando que los equipos están cometiendo un error. Bueno, quiero decir, por supuesto, lo están, pero no están realmente cometiendo este error a sabiendas. Ahora, la pregunta es, ¿cómo podríamos, digamos, intervenir aquí? ¿Qué podemos hacer? Y, bueno, la primera cosa de la que me gustaría hablar, pero hay una segunda cosa que quiero introducir, es incluir una política de seguridad de contenido, porque eso limita la ejecución de solo código arbitrario. Y aunque ciertas cosas aún pueden ser posibles, otras cosas serán realmente, bueno, limitadas o no serán posibles en absoluto. Ahora, cómo funciona un CSP se explica bastante simplemente cuando el navegador envía una solicitud al servidor y el servidor responde a ella y puede adjuntar varios, digamos, encabezados. Y uno de estos encabezados es una política CSP que se puede agregar.

7. Configuration and Vulnerability Scanning

Short description:

Puedes incluir un servicio de informes para tratar las violaciones como advertencias. Configura el acceso del navegador a los recursos usando encabezados y políticas. Usa un servicio de descubrimiento para escanear vulnerabilidades en dependencias de tiempo de ejecución y recibir informes sobre vulnerabilidades conocidas.

Puedes hacer un poco más, como incluir un servicio de informes. Así que, no, digamos, tratar las violaciones como errores, sino más bien como advertencias. Estas advertencias podrían enviarse a una URL. Así que, toda la sección inferior de este diagrama aquí es, digamos, por conveniencia o llamémoslo flexibilidad. Pero la parte superior, esto es realmente interesante porque aquí podemos configurar el navegador y cómo interpreta el acceso a los recursos. Y lo hace a través de este encabezado, como se mencionó. Este encabezado entonces consiste en el valor de diferentes políticas llamadas así. Así que, todo en una sección como esta entre los puntos y comas, eso es una política llamada así. Tenemos una política predeterminada. Entonces, ¿qué asumimos como una fuente predeterminada? Así que, self es siempre predeterminado. Así que, está bien. Luego, si viene de las mismas imágenes de origen, por ejemplo, permitimos todo. Eso podría ser dudoso, pero es solo como un ejemplo aquí. Para fuentes de medios como audio, video, tenemos algunos dominios permitidos y los scripts solo permitimos de los scripts de usuario principales, por ejemplo. Así que, ahora definimos nuestras políticas y el navegador las respetará. Así que, si tenemos un script deshonesto que potencialmente quiere incluir algo más de, no sé, danger.com, no sé, entonces esto no será permitido. Y también solo tener una función que se autoevalúe no será permitido aquí tampoco. Así que, esto es ya bastante bueno.

Genial. La segunda cosa que quiero mencionar antes de concluir es que también puedes mitigar aquí usando un servicio de descubrimiento como vimos antes. Y así, esto también es útil aquí porque lo que el servicio de descubrimiento puede hacer es escanear vulnerabilidades en tu micro. Así que, puede detectar qué paquetes se usan y luego puede trabajar contra las bases de datos con las vulnerabilidades conocidas. Y así, puede informarte cuando una de las dependencias que realmente estás usando tiene una vulnerabilidad. Así que, esto es realmente genial porque a diferencia de los informes de vulnerabilidad que obtienes de NPM, que también incluyen todas tus dependencias de desarrollo y todo, esto realmente trata solo con las dependencias de tiempo de ejecución. Y así, también obtendrás realmente, digamos, grandes informes. Así que, todo bien. Y así es como podría verse en un servicio de descubrimiento. Aquí vemos que todo está bien para, digamos, dependencias. Así que, bueno, bastante bien. Te informan y puedes incluso bloquear que estos micrófonos se desplieguen.

8. Testing, Authenticity, and Monitoring

Short description:

Siempre prueba todo y asegura la autenticidad. Monitorea las actividades en tiempo de ejecución para recopilar información sobre el rendimiento de la aplicación.

Así que, la conclusión que quiero sacar, lo primero es siempre probar todo. Es lo mismo que para cualquier otra aplicación web. Puedes incluso probar en, digamos, compartimentos más pequeños donde solo dices, probaré solo para este micrófono y hacerlo a través de pruebas de penetración. No será bueno, pero la solución como un todo, eso necesita ser sólido como una roca.

La segunda cosa, como vimos, un aspecto importante es siempre asegurar la autenticidad. Así que, asegúrate de que el micrófono no haya sido manipulado y sigue el principio de privilegio mínimo. Así que, necesitas abrirlo un poco, pero no más allá. Así que, este es el máximo que deberías alcanzar con tu solución.

Finalmente, y esto es algo de lo que no hablé aquí, pero eso, por supuesto, es algo que necesitas hacer, monitorear lo que está sucediendo en el tiempo de ejecución. Así que, todas las soluciones de registro que están ahí para el espacio de JavaScript, especialmente, utiliza tu favorita aquí. Realmente lo necesitas. Dado que esta cosa no está distribuida, es una gran manera también de obtener más información sobre cómo está funcionando tu aplicación en su conjunto. Con esto en mente, espero que aún tengas una gran conferencia y ponte en contacto si quieres saber más. Si quieres revisar el servicio de Discovery, escanea el código QR y de lo contrario, mantente fresco. 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

Escalando con Remix y Micro Frontends
Remix Conf Europe 2022Remix Conf Europe 2022
23 min
Escalando con Remix y Micro Frontends
Top Content
This talk discusses the usage of Microfrontends in Remix and introduces the Tiny Frontend library. Kazoo, a used car buying platform, follows a domain-driven design approach and encountered issues with granular slicing. Tiny Frontend aims to solve the slicing problem and promotes type safety and compatibility of shared dependencies. The speaker demonstrates how Tiny Frontend works with server-side rendering and how Remix can consume and update components without redeploying the app. The talk also explores the usage of micro frontends and the future support for Webpack Module Federation in Remix.
Enrutamiento en React 18 y más allá
React Summit 2022React Summit 2022
20 min
Enrutamiento en React 18 y más allá
Top Content
Routing in React 18 brings a native app-like user experience and allows applications to transition between different environments. React Router and Next.js have different approaches to routing, with React Router using component-based routing and Next.js using file system-based routing. React server components provide the primitives to address the disadvantages of multipage applications while maintaining the same user experience. Improving navigation and routing in React involves including loading UI, pre-rendering parts of the screen, and using server components for more performant experiences. Next.js and Remix are moving towards a converging solution by combining component-based routing with file system routing.
Entendiendo la Arquitectura Fiber de React
React Advanced 2022React Advanced 2022
29 min
Entendiendo la Arquitectura Fiber de React
Top Content
This Talk explores React's internal jargon, specifically fiber, which is an internal unit of work for rendering and committing. Fibers facilitate efficient updates to elements and play a crucial role in the reconciliation process. The work loop, complete work, and commit phase are essential steps in the rendering process. Understanding React's internals can help with optimizing code and pull request reviews. React 18 introduces the work loop sync and async functions for concurrent features and prioritization. Fiber brings benefits like async rendering and the ability to discard work-in-progress trees, improving user experience.
Thinking Like an Architect
Node Congress 2025Node Congress 2025
31 min
Thinking Like an Architect
Top Content
In modern software development, architecture is more than just selecting the right tech stack; it involves decision-making, trade-offs, and considering the context of the business and organization. Understanding the problem space and focusing on users' needs are essential. Architectural flexibility is key, adapting the level of granularity and choosing between different approaches. Holistic thinking, long-term vision, and domain understanding are crucial for making better decisions. Effective communication, inclusion, and documentation are core skills for architects. Democratizing communication, prioritizing value, and embracing adaptive architectures are key to success.
Componentes de Full Stack
Remix Conf Europe 2022Remix Conf Europe 2022
37 min
Componentes de Full Stack
Top Content
RemixConf EU discussed full stack components and their benefits, such as marrying the backend and UI in the same file. The talk demonstrated the implementation of a combo box with search functionality using Remix and the Downshift library. It also highlighted the ease of creating resource routes in Remix and the importance of code organization and maintainability in full stack components. The speaker expressed gratitude towards the audience and discussed the future of Remix, including its acquisition by Shopify and the potential for collaboration with Hydrogen.
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.

Workshops on related topic

Domina los Patrones de JavaScript
JSNation 2024JSNation 2024
145 min
Domina los Patrones de JavaScript
Top Content
Featured Workshop
Adrian Hajdin
Adrian Hajdin
Durante esta masterclass, los participantes revisarán los patrones esenciales de JavaScript que todo desarrollador debería conocer. A través de ejercicios prácticos, ejemplos del mundo real y discusiones interactivas, los asistentes profundizarán su comprensión de las mejores prácticas para organizar el código, resolver desafíos comunes y diseñar arquitecturas escalables. Al final de la masterclass, los participantes ganarán una nueva confianza en su capacidad para escribir código JavaScript de alta calidad que resista el paso del tiempo.
Puntos Cubiertos:
1. Introducción a los Patrones de JavaScript2. Patrones Fundamentales3. Patrones de Creación de Objetos4. Patrones de Comportamiento5. Patrones Arquitectónicos6. Ejercicios Prácticos y Estudios de Caso
Cómo Ayudará a los Desarrolladores:
- Obtener una comprensión profunda de los patrones de JavaScript y sus aplicaciones en escenarios del mundo real- Aprender las mejores prácticas para organizar el código, resolver desafíos comunes y diseñar arquitecturas escalables- Mejorar las habilidades de resolución de problemas y la legibilidad del código- Mejorar la colaboración y la comunicación dentro de los equipos de desarrollo- Acelerar el crecimiento de la carrera y las oportunidades de avance en la industria del software
IA a demanda: IA sin servidor
DevOps.js Conf 2024DevOps.js Conf 2024
163 min
IA a demanda: IA sin servidor
Top Content
Featured WorkshopFree
Nathan Disidore
Nathan Disidore
En esta masterclass, discutimos los méritos de la arquitectura sin servidor y cómo se puede aplicar al espacio de la IA. Exploraremos opciones para construir aplicaciones RAG sin servidor para un enfoque más lambda-esque a la IA. A continuación, nos pondremos manos a la obra y construiremos una aplicación CRUD de muestra que te permite almacenar información y consultarla utilizando un LLM con Workers AI, Vectorize, D1 y Cloudflare Workers.
React Patterns Made Simple
React Day Berlin 2024React Day Berlin 2024
62 min
React Patterns Made Simple
Top Content
Featured Workshop
Adrian Hajdin
Adrian Hajdin
Aprende patrones de React ampliamente utilizados, incluyendo HOCs, Compound Components, Provider Patterns, Functions as Child, y Portals, para escribir código más limpio y eficiente y crear aplicaciones escalables y mantenibles.Visión general En esta masterclass, los espectadores aprenderán sobre patrones clave de React que pueden hacer su código más eficiente, legible y mantenible. Presentaremos cada patrón, explicaremos cómo funciona y demostraremos ejemplos prácticos. Al final de la sesión, los participantes tendrán una comprensión sólida de cómo usar estos patrones en sus proyectos.Objetivos de aprendizajeHOCs Compound Components Provider Patterns Functions as Child Portals Modularidad Mantenibilidad Aplicación en el mundo real.
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.