Fundamentos

1

Desarrollo Web Escalable con Next.js: Optimización y SEO Integrado

2

Novedades y Cambios Clave en Next.js 15

3

Migración de Next.js 11 a 15: Guía Paso a Paso

Haciendo tu proyecto más rápido

4

Creación de React Server Components con Next.js y PostgreSQL

5

Integración de React Server Components con PostgreSQL

Consumiendo datos de manera eficiente

6

Consumo de datos en servidores con ORM Drizzle y TypeScript

7

Consumo de APIs en Next.js con ReactQuery y useEffect

8

Optimización del Consumo de Datos en Aplicaciones Web

9

Implementación de Suspense y Streaming en React y Next.js

Escalabilidad y personalización

10

Internacionalización en NextJS: Middleware y Rutas Dinámicas

11

Internacionalización en Next.js con Traducciones Dinámicas

12

Autenticación de Usuarios con Middleware en Next.js

13

Administración de Cookies con Next.js y JavaScript para Autenticación

14

Integración de Feature Flags en Next.js con LaunchDarkly

15

Manejo de Errores en Next.js: Server Actions y Páginas de Error

16

Integración de Sentry para Monitoreo de Errores en Next.js

Características Adicionales y Herramientas

17

Gestión del Caché en Next.js: Novedades y Estrategias Avanzadas

18

Seguridad en Next.js: Server Actions y Componentes React

19

Seguridad de Cookies y Encriptación en Aplicaciones Next.js

20

Optimización de Rendimiento en Next.js: Técnicas y Herramientas

21

Despliegue de Aplicaciones Next.js con Vercel y Docker

22

Despliegue de Next.js en Fly.io usando Docker y configuración de Postgres

23

Despliegue de Aplicaciones Next.js con Flyo y Docker

24

Migración y Optimización de Páginas con Next.js

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Administración de Cookies con Next.js y JavaScript para Autenticación

13/24
Recursos

En este artículo exploraremos cómo administrar cookies para la autenticación en aplicaciones desarrolladas con React, Next.js y JavaScript, entendiendo los fundamentos técnicos y los conceptos de seguridad involucrados para implementar un sistema funcional aunque no recomendado para producción.

¿Por qué usar cookies en lugar de otros métodos de almacenamiento?

  • Compatibilidad servidor-navegador: Las cookies son compartidas entre el navegador y el servidor, lo que facilita la autenticación en aplicaciones modernas.
  • Persistencia controlada: A diferencia de localStorage o sessionStorage, las cookies pueden tener configuraciones específicas de expiración y seguridad.
  • Soporte para middleware: Next.js facilita la manipulación de cookies en sus middlewares, permitiendo lógica avanzada en la autenticación.

¿Cómo implementar autenticación con cookies?

  1. Middleware en Next.js:

    • Configura el middleware para interceptar solicitudes y decidir el acceso según la existencia de cookies.
    • Usa métodos como cookies.get y cookies.set para manejar las cookies desde el servidor.
  2. Creación de sesiones:

    • Genera un ID aleatorio para cada usuario autenticado.
    • Utiliza una librería de criptografía, como crypto en Node.js, para hashear contraseñas con algoritmos como SHA-256.
  3. Creación y validación de cookies:

    • Almacena el hash generado en la cookie en lugar del texto plano de la contraseña.
    • Valida las solicitudes comparando el hash recibido con el hash esperado.
  4. Configuración de cookies seguras:

    • Asegúrate de usar opciones como httpOnly, secure, sameSite y definir una ruta específica (path) para limitar el acceso.

¿Cómo manejar errores y estados en el frontend?

  • Manejo de errores con useActionState:

    • Permite capturar errores de la autenticación y mostrarlos al usuario.
    • Proporciona retroalimentación visual al formulario, como mensajes de alerta.
  • Estados de carga con useFormStatus:

    • Previene múltiples envíos del formulario deshabilitando el botón mientras el servidor procesa la solicitud.
    • Mejora la experiencia del usuario al mostrar estados de carga.

¿Qué buenas prácticas de seguridad considerar?

  • No almacenar contraseñas en texto plano: Utiliza hashes en lugar de texto plano para proteger los datos de los usuarios.
  • Evitar exponer secretos en el código fuente: Nunca incluyas valores sensibles directamente en el código. Usa variables de entorno.
  • Restringir cookies al servidor: Configura las cookies como httpOnly para prevenir accesos desde scripts maliciosos en el cliente.

¿Por qué no usar este sistema en producción?

  • Falta de robustez: El sistema carece de medidas avanzadas como el cifrado de datos o la protección contra ataques como XSS y CSRF.
  • Seguridad limitada: Aunque se implementan hashes, este enfoque no es suficientemente seguro para proteger datos sensibles en entornos reales.

Aportes 2

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Para usar el hook **useFormStatus**, el mismo debe ejecutarse en un componente que se este renderizando dentro de una etiqueta \<form>, de esa manera podra hacer tracking del status del formulario. <https://react.dev/reference/react-dom/hooks/useFormStatus>
para que funcione es nesesario que en .env tenga SESSION\_SECRET valido ```SESSION\_SECRET =secreto```