Protección contra CSRF en configuraciones de React y API
Implemente cookies SameSite, tokens CSRF y patrones de cookies de doble envío en configuraciones SPA y SSR de React.
Protección contra CSRF en configuraciones de React y API es una lección gratuita de React Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de React Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de React Academy incluye 4 lecciones en total.
Qué es CSRF
Cross-Site Request Forgery (CSRF) es un ataque en el que un sitio web malicioso engaña al navegador del usuario para que envíe una solicitud autenticada a su API. Como el navegador adjunta automáticamente las cookies a las solicitudes, el servidor no puede distinguir entre una solicitud legítima de su aplicación y una solicitud falsificada desde el sitio del atacante.
Por qué las cookies permiten CSRF
Las cookies son la causa principal de la vulnerabilidad CSRF. Cuando un usuario inicia sesión en su aplicación, la cookie de sesión se almacena en el navegador. Cuando visita la página del atacante, este puede activar el envío de un formulario o una solicitud fetch a su API, y el navegador incluye automáticamente la cookie de sesión, autenticando así la solicitud maliciosa.
Atributo de cookie SameSite
El atributo de cookie SameSite indica a los navegadores cuándo deben incluir cookies en solicitudes entre sitios. Tiene tres valores: Lax (el valor predeterminado en los navegadores modernos; bloquea POST entre sitios, pero permite GET), Strict (bloquea todas las solicitudes entre sitios, incluidas las navegaciones GET) y None (permite solicitudes entre sitios y requiere el indicador Secure con HTTPS).
SameSite=Lax y API seguras
SameSite=Lax bloquea las solicitudes POST, PUT, DELETE y PATCH entre sitios: los métodos utilizados para realizar mutaciones. Si su API utiliza GET únicamente para lecturas y POST para todas las mutaciones, SameSite=Lax evita eficazmente CSRF en las SPA de los navegadores modernos. Esta es la mitigación básica en la que se apoyan actualmente la mayoría de las aplicaciones.
Patrón de doble envío de cookie
El patrón de doble envío de cookie es una mitigación de CSRF en la que el servidor establece un token CSRF aleatorio en una cookie que no es HttpOnly. El cliente lee el valor de esta cookie y lo incluye como una cabecera de solicitud personalizada (por ejemplo, X-CSRF-Token). El servidor verifica que el valor de la cabecera coincida con el de la cookie. Un atacante no puede leer la cookie desde otro origen, por lo que no puede establecer la cabecera correcta.
Patrón del token sincronizador
El patrón del token sincronizador genera un token CSRF único por cada sesión de usuario en el servidor. En los formularios HTML, el token se inserta en un campo oculto. En las llamadas a la API de una SPA, el token se proporciona mediante un endpoint o una etiqueta meta y se envía en una cabecera personalizada. El servidor valida el token en cada solicitud que modifica el estado.
JWT en la cabecera Authorization: no vulnerable
Una SPA de React que almacena su JWT en memoria o en localStorage y lo envía en una cabecera Authorization: Bearer no es vulnerable al CSRF clásico. Los ataques CSRF explotan la autenticación basada en cookies; la página de un atacante no puede establecer cabeceras personalizadas en solicitudes entre orígenes debido a las restricciones de CORS, por lo que no puede falsificar la cabecera Authorization.
Las cabeceras de solicitud personalizadas como mitigación de CSRF
Las solicitudes simples entre orígenes (POST de un formulario o carga de una imagen) no permiten cabeceras personalizadas. Solo las solicitudes que pasan por la comprobación previa de CORS pueden incluir cabeceras personalizadas, y las solicitudes con comprobación previa requieren autorización explícita del servidor. Una API que exige una cabecera personalizada (como X-Requested-With: XMLHttpRequest) para todas las mutaciones está protegida de forma inherente frente a los ataques CSRF simples.
CORS y CSRF son diferentes
CORS controla qué orígenes pueden leer la respuesta de una solicitud de origen cruzado. CSRF se refiere a qué orígenes pueden realizar solicitudes que cambian el estado. Configurar CORS para restringir los orígenes no evita CSRF: el navegador sigue enviando la solicitud y la cookie; CORS solo controla si la respuesta es visible para JavaScript. Un ataque CSRF no necesita leer la respuesta.
Prácticas recomendadas para las cookies de sesión
Configure las cookies de sesión con: HttpOnly: true (evita que JavaScript lea la cookie y bloquea el robo de tokens basado en XSS), Secure: true (solo se envía mediante HTTPS), SameSite: Lax o Strict (evita CSRF), y un Max-Age o tiempo de expiración adecuados. Estos cuatro atributos refuerzan considerablemente la gestión de sesiones.
CSRF en Next.js App Router
Next.js App Router utiliza Server Actions, que son solicitudes POST. Next.js implementa protección contra CSRF comprobando la cabecera Origin frente al host; las solicitudes de orígenes inesperados se rechazan. Esta comprobación integrada, combinada con cookies de sesión SameSite=Lax, proporciona una protección sólida contra CSRF para las mutaciones basadas en Server Actions.
Atributo de cookie SameSite
¿Qué valor de la cookie SameSite bloquea las solicitudes POST entre sitios, pero permite las navegaciones GET entre sitios?
Repaso de la lección
CSRF aprovecha la autenticación basada en cookies al engañar al navegador para que envíe solicitudes autenticadas entre sitios. SameSite=Lax es la defensa básica en los navegadores modernos. Los patrones Double Submit Cookie y Synchronizer Token proporcionan protección adicional. Las SPA de React que usan JWT en cabeceras Authorization son inherentemente resistentes a CSRF. Las cabeceras personalizadas obligatorias y el preflight de CORS también mitigan CSRF. Combine siempre HttpOnly + Secure + SameSite en las cookies de sesión.
Preguntas frecuentes
¿La lección «Protección contra CSRF en configuraciones de React y API» es gratis?
Sí — el texto completo de «Protección contra CSRF en configuraciones de React y API» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de React Academy, actualiza a CoddyKit PRO. El curso de React Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Protección contra CSRF en configuraciones de React y API»?
Implemente cookies SameSite, tokens CSRF y patrones de cookies de doble envío en configuraciones SPA y SSR de React. Practicas React Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar React Academy?
No se requiere experiencia previa. React Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Protección contra CSRF en configuraciones de React y API»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de React Academy?
Sí. Cada lección de React Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- XSS en React: dangerouslySetInnerHTML y scripts de terceros
- Protección contra CSRF en configuraciones de React y API
- Política de seguridad de contenido para aplicaciones React
- Gestión de secretos y variables de entorno