La Seguridad se Encuentra con la Usabilidad: Creando Soluciones de Control de Acceso Dinámicas y Granulares

This ad is not shown to multipass and full ticket holders
React Summit US
React Summit US 2025
November 17 - 21, 2025
New York, US & Online
The biggest React conference in the US
Learn More
In partnership with Focus Reactive
Upcoming event
React Summit US 2025
React Summit US 2025
November 17 - 21, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

A medida que las aplicaciones aumentan en complejidad, gestionar los permisos de usuario se convierte en un desafío creciente. Sin un enfoque estructurado, los permisos rápidamente se convierten en un enredo de declaraciones if-else, lo que lleva a una pobre mantenibilidad y escalabilidad. Aunque el Control de Acceso Basado en Roles (RBAC) proporciona un buen punto de partida para gestionar el acceso de usuarios, puede que no ofrezca el nivel de granularidad necesario a medida que tu aplicación evoluciona. Para obtener un control más fino sobre quién puede realizar qué acciones, en qué objetos y bajo qué condiciones, el modelo de Control de Acceso Basado en Atributos (ABAC), recomendado por OWASP, se vuelve invaluable.


En esta sesión, exploraremos dos enfoques prácticos para construir un sistema de permisos escalable en React. Primero, presentaré CASL, una biblioteca ABAC popular que simplifica el control de acceso detallado. Luego, te guiaré a través de la creación de un sistema de permisos personalizado desde cero, ofreciendo una visión sobre cómo diseñar una solución que se ajuste a las necesidades de tu aplicación.


A lo largo de la sesión, realizaré recorridos detallados de código para ambos enfoques, cubriendo conceptos clave como la gestión de estado optimizada, hooks personalizados y consultas de caché/condicionales usando Redux Toolkit. Aprenderás cómo implementar estas estrategias para crear un marco de permisos limpio, eficiente y mantenible.


Al final de la sesión, tendrás una comprensión sólida de cómo implementar sistemas de permisos escalables en React, ya sea que elijas una solución preconstruida como CASL o construyas la tuya propia.

This talk has been presented at React Summit 2025, check out the latest edition of this React Conference.

Samhitha Rama Prasad
Samhitha Rama Prasad
21 min
17 Jun, 2025

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Samhita enfatiza la importancia del control de acceso en aplicaciones web y el cambio hacia el control de acceso basado en atributos para mejorar la seguridad. El control de acceso basado en atributos considera los atributos del usuario, los atributos del recurso y los factores ambientales para otorgar acceso. Los desafíos de implementación incluyen la necesidad de aplicar tanto en el front-end como en el back-end para prevenir eludir el sistema. La definición de permisos en CASL implica asignar habilidades basadas en roles de usuario utilizando palabras clave y operadores. La implementación de políticas implica definir políticas para la compatibilidad de la interfaz de usuario y el servidor, agrupar políticas por recurso y usar CEL para la evaluación de condiciones. La evaluación del control de acceso requiere manejar la lógica de negocio dinámica, aplicar permisos con componentes de CASL e implementar rutas protegidas basadas en los permisos del usuario.

1. Introducción al Control de Acceso

Short description:

Samhita, una ingeniera full-stack en BlackRock, discute la importancia del control de acceso en aplicaciones web y el cambio hacia el control de acceso basado en atributos para mejorar la seguridad.

Hola a todos. Soy Samhita. Soy una ingeniera full-stack en BlackRock. Y aquí hay algo sobre mí. Ahora, si estuviéramos haciendo esta sesión en persona, habríamos jugado un rápido juego para romper el hielo. Habría presumido de mis habilidades para hacer press de banca y les habría mostrado muchos memes. Pero desafortunadamente, no pude unirme a ustedes en Ámsterdam este año. Así que tendremos que omitir todo esto y sumergirnos de lleno. Comencemos.

Imagina que estás construyendo control de acceso en tu aplicación web. Entonces, la primera pregunta que probablemente te harías es, ¿qué estrategias debería usar para asegurarme de que los datos sensibles sean accedidos solo por aquellos que realmente lo necesitan? Entonces podrías empezar a pensar. ¿Debería implementarlo a nivel de componente o en la capa de API? ¿O es seguro que el back end lo maneje todo? Entonces podrías considerar otra capa de complejidad. ¿Cómo integro todos estos permisos con verificaciones de lógica de negocio y banderas de características para que ciertas características estén disponibles solo para usuarios específicos?

Para ahora, espero que entiendas que el control de acceso no es una sola decisión y tendrías que pensar en múltiples capas en tu arquitectura para hacerlo bien. Así que, en la sesión de hoy, repasaremos todo esto y exploraremos dos formas de implementar control de acceso que sea granular, dinámico y escalable. ¿Por qué deberías preocuparte por esto? OASP ha listado el control de acceso roto como el riesgo de seguridad número uno en aplicaciones web. También recomiendan el control de acceso basado en atributos sobre el tradicional control de acceso basado en roles que otorga acceso a los usuarios solo basado en los roles del usuario.

2. Implementation of Attribute-Based Access Control

Short description:

El control de acceso basado en atributos garantiza una seguridad robusta al considerar atributos de usuario, atributos de recursos y factores ambientales al otorgar acceso. La aplicación en el front-end proporciona retroalimentación instantánea a los usuarios, pero debe complementarse con la aplicación en el back-end para evitar eludirla. Implementar el control de acceso solo en el front-end plantea desafíos de escalabilidad y requiere consistencia de políticas a través de capas, lo que requiere un enfoque centralizado en el back-end para definir permisos.

¿Por qué? Porque el control de acceso basado en atributos es más efectivo para implementar el principio de privilegio mínimo, y también maneja necesidades de acceso dinámicas. Veamos cómo. Considera a Sam, quien es una publicadora para una aplicación de blogs. Cuando se unió, se le asignaron categorías dentro de las cuales puede realizar acciones. La regla de control de acceso es que los publicadores pueden publicar publicaciones aprobadas en sus categorías asignadas pero solo durante el horario laboral. Cada vez que se crea una publicación de blog, se le asigna una categoría. Inicialmente no está revisada, pero eventualmente es aprobada por el editor. Ahora, si Sam quiere publicar esta publicación, el acceso se otorga no solo basado en su rol, que es el caso con el control de acceso basado en roles, sino también basado en sus atributos, los atributos del recurso, que es la publicación, y atributos ambientales como el tiempo y la ubicación. Estos tres, junto con las políticas de control de acceso en sí mismas, son los cuatro componentes principales que conforman ABAC. Si alguno de sus atributos cambia, como si se traslada al departamento de membresía o se le asigna a moda, su acceso se revoca automáticamente. Y debido a que todos estos atributos se incorporan en el proceso de toma de decisiones, la seguridad de tu aplicación es mucho más robusta.

¿Dónde deberías aplicarlo? Deberías aplicar el control de acceso en el front-end para que los usuarios tengan retroalimentación instantánea. Saben inmediatamente lo que pueden o no pueden hacer, y esto hace que la interfaz de usuario sea muy intuitiva. Este es un ejemplo crudo de cómo podría verse. Aparte del hecho de que es un FL-stangle y la solución no es escalable, el problema aquí es que el control de acceso en el front-end es solo la primera línea de defensa. Es como colgar un cartel de no entrar en tu puerta y no cerrarla con llave. Así que es muy crucial que también apliques el control de acceso en el back-end porque el control de acceso en el front-end puede ser fácilmente eludido con las herramientas adecuadas. Así que podrías replicar las mismas reglas en el back-end. Eso es mucha duplicación y es difícil asegurar la consistencia de políticas a través de ambas capas, por lo que aunque la aplicación de políticas necesita ocurrir tanto en el front-end como en el back-end, la definición de las reglas o tus permisos mismos necesitan estar en el back-end como una única fuente de verdad. Así que podrías descargar toda tu lógica de control de acceso al back-end y hacer que el front-end haga una llamada API al back-end y obtenga la decisión de control de acceso.

Esta solución es segura, pero introduce compensaciones en términos de usabilidad y rendimiento, especialmente en ABAC porque vimos cómo depende de factores dinámicos como usuario, recurso y atributos ambientales. Y cada vez que estos atributos cambian, tu interfaz de usuario necesita activar una llamada API al back-end para obtener la decisión de control de acceso actualizada, lo que causa latencia y una experiencia de usuario lenta. Y sin mencionar, si hay actualizaciones de políticas o adiciones de políticas, tu código necesita ser reescrito. Además, ¿cómo manejarías las banderas de características como usuarios premium o recursos exclusivos? ¿Y qué pasa cuando hay múltiples front-ends y múltiples servicios de back-end? ¿Cómo asegurarías la consistencia de la definición de políticas a través de estas capas? Y más importante, ¿cómo creas una solución escalable que satisfaga todos los criterios de diseño que discutimos hasta ahora? Como dije al principio, repasaremos dos soluciones. La primera es CASL. Es una biblioteca de JavaScript de código abierto que te permite definir permisos de manera declarativa como lo que el usuario puede o no puede hacer en lugar de preocuparse por cómo verificar los permisos. Considera estos ejemplos de nuestra aplicación de blogs. Un administrador puede gestionar todo. Un autor puede crear y editar sus propias publicaciones dentro de las categorías asignadas, pero no puede eliminar publicaciones publicadas. Estos se llaman habilidades en CASL.

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.