Seguridad en web apps: guía OWASP Top 10 para desarrolladores en 2026
Implementación de seguridad en web apps según OWASP Top 10: inyección SQL, XSS, CSRF, broken auth, exposición de datos sensibles. Ejemplos reales con Next.js.
Ideas clave
Lo esencial antes de bajar al detalle
- El 90% de las vulnerabilidades críticas en web apps están en el OWASP Top 10.
- La inyección SQL/NoSQL sigue siendo la vulnerabilidad más explotada en 2026 pese a ser la más conocida.
- El XSS en React es infrecuente si usas JSX correctamente, pero dangerouslySetInnerHTML es una trampa común.
- La validación debe ocurrir siempre en el servidor, nunca confiar solo en el cliente.
OWASP Top 10 2026: visión general
La OWASP Top 10 es la lista de referencia mundial de vulnerabilidades de seguridad en aplicaciones web. Las más críticas en 2026 siguen siendo inyección, broken auth, exposición de datos sensibles y SSRF.
Abordaremos cada una con ejemplos concretos en el contexto de aplicaciones Next.js.
Inyección SQL y NoSQL
- Vulnerable: construir queries concatenando strings con input del usuario.
- Seguro: usar siempre ORM (Prisma, Drizzle) o sentencias preparadas. El ORM parametriza automáticamente.
- En Next.js con Prisma: `prisma.user.findUnique({ where: { email: userInput } })` es seguro. Nunca uses `$queryRaw` con interpolación directa.
- Valida y sanea los inputs en el servidor con Zod antes de cualquier query.
XSS (Cross-Site Scripting)
- React escapa automáticamente el contenido JSX. El riesgo principal es `dangerouslySetInnerHTML`: solo úsalo con contenido sanitizado (usa la librería `dompurify`).
- Content Security Policy (CSP) headers como segunda línea de defensa. Configúralos en `next.config.ts`.
- Evita `eval()`, `innerHTML` directo y librerías de terceros que manipulen el DOM sin auditar.
Autenticación y gestión de sesiones
- Usa cookies HttpOnly y Secure para las sesiones. Nunca localStorage para tokens de sesión.
- Implementa rate limiting en endpoints de login y registro (middleware de Next.js + Redis).
- MFA (autenticación de dos factores) para acciones críticas (pagos, cambios de contraseña, eliminación de datos).
- Ver implementación completa en autenticación en web apps.
Exposición de datos sensibles
- Nunca incluyas secretos (API keys, tokens) en el código frontend ni en variables de entorno `NEXT_PUBLIC_` salvo que sean seguras de exponer.
- Cifra datos sensibles en reposo (columnas de PII en la base de datos) con extensiones como pgcrypto.
- HTTPS obligatorio. En Next.js en Vercel está activo por defecto.
- Logs sin datos personales: no registres contraseñas, tokens ni PII en logs de aplicación.
Lecturas relacionadas
Sigue por aquí
Arquitectura de una web app moderna en 2026: frontend, backend, base de datos y APIs
Guía técnica de arquitectura para web apps modernas: capas, patrones, base de datos, autenticación y APIs. Con ejemplos reales y decisiones de diseño.
Autenticación de usuarios en web apps: guía completa con Next.js, NextAuth y Clerk
Guía completa de autenticación para web apps en 2026: opciones, implementación con NextAuth.js y Clerk, manejo de sesiones, roles y seguridad.
Optimización de rendimiento en web apps: guía práctica con Next.js y React
Guía práctica para optimizar el rendimiento de web apps con Next.js y React: Core Web Vitals, lazy loading, caché, queries de base de datos y más.
Cuánto cuesta desarrollar una web app en 2026: rangos reales por tipo de proyecto
Desglose real de precios para desarrollar una web app en 2026: SaaS, dashboard, portal de clientes, marketplace. Qué incluye cada rango y cómo planificar el presupuesto.