Asegurando Aplicaciones Renderizadas en el Servidor – Caso Next.js

Rate this content
Bookmark

La profunda integración de Next.js entre el cliente y el servidor hace que desarrollar aplicaciones rápidas de JavaScript sea muy sencillo. Y también es la peor pesadilla de tu equipo de seguridad. Descubramos algunos patrones de seguridad para frameworks de renderizado en servidor como Next.js.

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

Eric Burel
Eric Burel
20 min
28 Oct, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Bienvenidos a la charla sobre la Seguridad del Servidor en las Aplicaciones Rojas en el Contexto de Next.js. Next.js trae nuevos desafíos para los desarrolladores front-end con sus tecnologías de renderizado del lado del servidor. Necesitamos considerar la seguridad en las aplicaciones Next.js y abordar las vulnerabilidades comunes listadas en el top 10 de OWASP. La falsificación de solicitudes del lado del servidor (SSRF) es una vulnerabilidad común que permite a los atacantes explotar los privilegios del servidor. Los fallos en el registro y monitoreo de seguridad son críticos, ya que una configuración adecuada es necesaria para detectar ataques. Ser cauteloso con los paquetes npm, abordar fallos de identificación y autenticación, y actualizar componentes vulnerables son cruciales para la seguridad de la aplicación. La siembra de bases de datos, los encabezados de seguridad y las políticas de permisos son importantes para la seguridad de la aplicación. Es importante reducir la criticidad de un ataque, verificar el encabezado de seguridad de transporte estricto y prevenir problemas de seguridad siguiendo las mejores prácticas. Comprender la vulnerabilidad CSRF, la vulnerabilidad de inyección de imágenes y los fallos criptográficos es importante. El control de acceso roto puede resultar en acceso no autorizado y debe ser mitigado. ¡Gracias por ver esta charla y mantente seguro!

1. Securing Server on the Red Apps in Next.js

Short description:

Bienvenidos a la charla sobre Asegurar el Servidor en las Aplicaciones Rojas en el Contexto de Next.js. Next.js trae nuevos desafíos para los desarrolladores front-end con sus tecnologías de renderizado del lado del servidor. Necesitamos considerar la seguridad en las aplicaciones Next.js y abordar las vulnerabilidades comunes listadas en el OWASP top 10.

Hola a todos, y bienvenidos a esta charla, Asegurar el Servidor en las Aplicaciones Rojas en el Contexto de Next.js. Mi nombre es Eric Burel. Soy un ingeniero freelance de Francia. Soy miembro del colectivo Devo Graphics que realiza las encuestas de estado de JavaScript, HTML, CSS, GraphQL, y ahora React. Soy un formador de Next.js y autor de cursos, y actualmente estoy escribiendo un curso llamado Next Patterns donde muestro demostraciones interactivas de patrones de programación avanzados con Next.

Estas nuevas tecnologías, Next.js, tecnologías de renderizado del lado del servidor, traen muchos nuevos desafíos para nosotros, los desarrolladores front-end, para nosotros, los desarrolladores de React. Porque full stack significa tener un back-end, y un back-end significa muchos problemas para los desarrolladores front-end y las personas que tradicionalmente han estado escribiendo aplicaciones front-end en React. Además, estas tecnologías nos permiten mezclar de manera transparente el código del servidor y del cliente, JavaScript que se ejecuta en el navegador y JavaScript que se ejecuta en el servidor. Esta es una gran fuente de complejidad, a pesar de ser una innovación muy interesante. Así que full stack y mezclar el código del servidor y del cliente puede significar muchos problemas, problemas de seguridad. Por lo tanto, es importante comenzar a pensar en la seguridad en el contexto de las aplicaciones Next.js.

Cada nueva tecnología puede traer nuevas pistolas de comida. Las pistolas de comida son errores que los desarrolladores tenderán sistemáticamente a cometer, y algunos de ellos podrían crear vulnerabilidades de seguridad. Por ejemplo, ¿verificas la autenticación en un diseño de Next.js? Esta es una pregunta que vamos a responder en unos minutos. Pero primero, hablemos del OWASP. El OWASP es una fundación sin fines de lucro que quiere que tu software sea seguro. Son personas realmente geniales. Así que publican un top 10 de los riesgos de seguridad más comunes que enfrentan las aplicaciones web. También lo hacen para aplicaciones móviles e incluso aplicaciones de IA recientemente. Así que aplicar el OWASP top 10 a Next.js y a los frameworks de renderizado del lado del servidor full stack más ampliamente es una muy buena manera de comenzar con la seguridad porque estos son los problemas más comunes. Así que si eres capaz de remediar las 10 principales vulnerabilidades, ya tienes una aplicación muy segura. Así que descubramos este top 10, y tratemos de pensar cómo podemos aplicarlo a Next.js.

2. Server-Side Request Forgery and Security Logging

Short description:

La falsificación de solicitudes del lado del servidor (SSRF) es una vulnerabilidad común que permite a los atacantes explotar los privilegios del servidor pasando una URL e iniciando solicitudes desde el servidor. Los fallos en el registro y monitoreo de seguridad también son críticos, ya que una configuración adecuada es necesaria para detectar ataques. Los fallos de integridad de software y datos, incluidos los hacks de dependencias y los ataques a la cadena de suministro, representan riesgos significativos para las aplicaciones.

Número 10, falsificación de solicitudes del lado del servidor, SSRF. Estas siglas son realmente buenos ejercicios de pronunciación para hablantes no nativos como yo, y también una especie de pesadilla diaria, pero de todos modos. La idea es que permites al usuario pasar una URL y lanzas la solicitud a esta URL desde tu propio servidor. El problema es que el atacante entonces se beneficia de los privilegios de tu servidor. Así que una aplicación de ejemplo podría ser que estás creando un servicio de resumen de IA. Entonces el usuario pasa una URL de un sitio web y tú creas un resumen del contenido del sitio web. La cuestión es que también podrían elegir pasar la URL a localhost, y localhost no será su computadora sino tu servidor en este caso. Así que pueden comenzar a lanzar una solicitud desde tu servidor a tu propia infraestructura privada, a otros servicios en tu infraestructura, por ejemplo, tu base de datos u otros servicios privados similares. Así que es una mala. No estoy necesariamente dando soluciones a cada problema. Lo siento, porque cada una de estas vulnerabilidades o familias de vulnerabilidades requeriría su propia charla. Pero al menos me gustaría que estuvieras al tanto de la existencia de estos ataques si estás desarrollando aplicaciones similares. Y luego puedes trabajar en las remediaciones.

Pasemos al número nueve, fallos en el registro y monitoreo de seguridad. Básicamente estás registrando basura, pero no información. Este es muy importante porque si no configuras adecuadamente tu sistema de registro, ni siquiera ves los ataques. Así que esa es realmente la base de un sistema de seguridad, poder decir cuándo tienes un ataque. No es tan obvio. Así que podrías querer tener registros que estén más enfocados en la parte crítica de tu aplicación como pagos, creación de cuentas, inicio de sesión, que son realmente conocidos por ser puntos de entrada para atacantes.

Número ocho, fallos de integridad de software y datos. Es uno muy amplio. Así que tus dependencias son hackeadas, tu CI es hackeado. Ejecutas código de usuario deserializado. Básicamente cualquier cosa que podría ayudar a tener código malicioso en tu aplicación. No solo inyección. La inyección es una vulnerabilidad específica, pero más ampliamente ejecutar malware desde tu aplicación. Los ataques a la cadena de suministro son muy populares en estos días. Así que esto es cuando una de tus dependencias es hackeada. Son populares porque son muy eficientes para el atacante. Solo hackeas una aplicación y de repente has hackeado todas las aplicaciones que están usando una dependencia.

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

Simplificando los Componentes del Servidor
React Advanced 2023React Advanced 2023
27 min
Simplificando los Componentes del Servidor
Top Content
React server components simplify server-side rendering and provide a mental model of components as pure functions. Using React as a library for server components allows for building a basic RSC server and connecting it to an SSR server. RSC responses are serialized virtual DOM that offload code from the client and handle interactivity. The client manifest maps serialized placeholders to real components on the client, enabling dynamic rendering. Server components combine the best of classic web development and progressive enhancement, offering the advantage of moving logic from the client to the server.
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.
Explorando los fundamentos de los Componentes del Servidor React
React Day Berlin 2023React Day Berlin 2023
21 min
Explorando los fundamentos de los Componentes del Servidor React
Top Content
This Talk introduces React Server Components (RSC) and explores their serialization process. It compares RSC to traditional server-side rendering (SSR) and explains how RSC handles promises and integrates client components. The Talk also discusses the RSC manifest and deserialization process. The speaker then introduces the Waku framework, which supports bundling, server, routing, and SSR. The future plans for Waku include integration with client state management libraries.
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.
Y Ahora Entiendes los Componentes del Servidor React
React Summit 2024React Summit 2024
27 min
Y Ahora Entiendes los Componentes del Servidor React
Top Content
In this Talk, Kent C. Dodds introduces React Server Components (RSCs) and demonstrates how to build them from scratch. He explains the process of integrating RSCs with the UI, switching to RSC and streaming for improved performance, and the benefits of using RSCs with async components. Dodds also discusses enhancements with streaming and server context, client support and loaders, server component rendering and module resolution, handling UI updates and rendering, handling back buttons and caching, and concludes with further resources for diving deeper into the topic.
Una Guía Práctica para Migrar a Componentes de Servidor
React Advanced 2023React Advanced 2023
28 min
Una Guía Práctica para Migrar a Componentes de Servidor
Top Content
React query version five is live and we'll be discussing the migration process to server components using Next.js and React Query. The process involves planning, preparing, and setting up server components, migrating pages, adding layouts, and moving components to the server. We'll also explore the benefits of server components such as reducing JavaScript shipping, enabling powerful caching, and leveraging the features of the app router. Additionally, we'll cover topics like handling authentication, rendering in server components, and the impact on server load and costs.

Workshops on related topic

AI para Desarrolladores de React
React Advanced 2024React Advanced 2024
142 min
AI para Desarrolladores de React
Featured Workshop
Eve Porcello
Eve Porcello
El conocimiento de las herramientas de AI es fundamental para preparar el futuro de las carreras de los desarrolladores de React, y la suite de herramientas de AI de Vercel es una vía de acceso accesible. En este curso, examinaremos más de cerca el Vercel AI SDK y cómo esto puede ayudar a los desarrolladores de React a construir interfaces de transmisión con JavaScript y Next.js. También incorporaremos APIs de terceros adicionales para construir y desplegar una aplicación de visualización de música.
Temas:- Creación de un Proyecto de React con Next.js- Elección de un LLM- Personalización de Interfaces de Transmisión- Construcción de Rutas- Creación y Generación de Componentes - Uso de Hooks (useChat, useCompletion, useActions, etc)
Construye una aplicación WordPress sin cabeza con Next.js y WPGraphQL
React Summit 2022React Summit 2022
173 min
Construye una aplicación WordPress sin cabeza con Next.js y WPGraphQL
Top Content
WorkshopFree
Kellen Mace
Kellen Mace
En esta masterclass, aprenderás cómo construir una aplicación Next.js que utiliza Apollo Client para obtener datos de un backend de WordPress sin cabeza y usarlo para renderizar las páginas de tu aplicación. Aprenderás cuándo debes considerar una arquitectura de WordPress sin cabeza, cómo convertir un backend de WordPress en un servidor GraphQL, cómo componer consultas usando el IDE GraphiQL, cómo colocar fragmentos GraphQL con tus componentes, y más.
Next.js 13: Estrategias de Obtención de Datos
React Day Berlin 2022React Day Berlin 2022
53 min
Next.js 13: Estrategias de Obtención de Datos
Top Content
WorkshopFree
Alice De Mauro
Alice De Mauro
- Introducción- Prerrequisitos para la masterclass- Estrategias de obtención: fundamentos- Estrategias de obtención – práctica: API de obtención, caché (estática VS dinámica), revalidar, suspense (obtención de datos en paralelo)- Prueba tu construcción y sírvela en Vercel- Futuro: Componentes de servidor VS Componentes de cliente- Huevo de pascua de la masterclass (no relacionado con el tema, destacando la accesibilidad)- Conclusión
La Puerta al Backend: Guía del Desarrollador Frontend para el Desarrollo Full-Stack
React Summit US 2023React Summit US 2023
160 min
La Puerta al Backend: Guía del Desarrollador Frontend para el Desarrollo Full-Stack
Top Content
WorkshopFree
Amy Dutton
Amy Dutton
Esta masterclass te guiará a través del ciclo de vida del desarrollo de productos para crear una aplicación web del mundo real. Aprenderás sobre los Componentes del Servidor React, construyendo un sistema de diseño dentro de Storybook, y utilizando el desarrollo frontend para acercarte a convertirte en un desarrollador full-stack. La masterclass cubrirá el aumento de la confianza en tu aplicación con pruebas unitarias e implementando autenticación y autorización. Tendrás la oportunidad de trabajar a través de las características del producto y examinar un proyecto real de RedwoodJS, obteniendo valiosa experiencia en el desarrollo de productos del mundo real. RedwoodJS hace que sea simple acercarse al desarrollo full-stack, y esta masterclass te dará las habilidades que necesitas para crear tus propias aplicaciones web del mundo real.
Patrones Avanzados de Despliegue de Aplicaciones con Componentes de Servidor React (feat. un Marco RSC DIY)
React Summit US 2023React Summit US 2023
104 min
Patrones Avanzados de Despliegue de Aplicaciones con Componentes de Servidor React (feat. un Marco RSC DIY)
Top Content
WorkshopFree
 Greg Brimble
Greg Brimble
El ecosistema de desarrolladores siempre está avanzando rápidamente y este año no ha sido una excepción. Los Componentes de Servidor React pueden ofrecer una mejora significativa a la experiencia del desarrollador y al rendimiento de la aplicación. Pero creo que es justo decir que este nuevo paradigma de servidor primero puede ser complicado de entender!En la primera mitad de esta masterclass, exploraremos los Componentes de Servidor React desde cero: construyendo nuestro propio mini marco meta para ayudarnos a entender cómo funcionan los RSCs. Descubriremos exactamente qué se produce en una construcción RSC y conectaremos esas piezas para formar una aplicación completa.A continuación, ¡lo desplegaremos! Cloudflare también ha tenido un año ocupado — Smart Placement, en particular, es una nueva tecnología que hemos desarrollado que se ajusta perfectamente al modelo RSC. Exploraremos por qué eso tiene sentido para nuestra aplicación de masterclass, y realmente lo desplegaremos en la Plataforma de Desarrolladores de Cloudflare.Finalmente, ampliaremos un poco más nuestra aplicación, utilizando D1 (nuestra base de datos SQL sin servidor) para mostrar realmente el poder del Componente de Servidor React cuando se combina con Smart Placement.Deberías salir de esta masterclass con una mayor comprensión de cómo funcionan los Componentes de Servidor React (tanto detrás de las escenas como también cómo tú como desarrollador puedes usarlos día a día), así como una visión de algunos de los nuevos patrones de despliegue que ahora son posibles después de las recientes innovaciones en el espacio de la plataforma.
Crea un sitio web editable visualmente con Next.js utilizando React Bricks, con blog y comercio electrónico
React Summit 2023React Summit 2023
139 min
Crea un sitio web editable visualmente con Next.js utilizando React Bricks, con blog y comercio electrónico
Top Content
WorkshopFree
Matteo Frana
Matteo Frana
- React Bricks: por qué lo construimos, qué es y cómo funciona- Crea una cuenta gratuita- Crea un nuevo proyecto con Next.js y Tailwind- Explora la estructura del directorio- Anatomía de un Brick- Crea un nuevo Brick (Texto-Imagen)- Añade un título y descripción con edición visual RichText- Añade una imagen con edición visual- Añade controles de barra lateral para editar props (relleno y lado de la imagen)- Anidación de Bricks utilizando el componente Repeater- Crea un brick de galería de imágenes- Publica en Netlify o Vercel- Tipos de página y campos personalizados- Acceso a los valores meta de la página- Internacionalización- Cómo reutilizar contenido en varias páginas: Historias y incrustaciones- Cómo crear un comercio electrónico con datos de productos de una base de datos externa y páginas de aterrizaje creadas visualmente en React Bricks- Características empresariales avanzadas: permisos flexibles, estructura bloqueada, componentes visuales personalizados