EXPEDIENTE · 2026
Evidence Atlas — Arquitectura de seguridad
Caso de estudio sobre la versión anterior de esta web, que tenía un espacio privado de trabajo: cómo lo separé de la parte pública con autorización en servidor, permisos por fila (RLS) y copias de publicación sin datos privados.
FICHA DE EVIDENCIA
Qué hice y qué quedó demostrado.
- Responsabilidad
- Modelado de amenazas y diseño de los límites de identidad, datos privados, publicación, renderizado y operación del sistema.
- Resultado
- El navegador nunca elige a qué cuenta o espacio accede, las páginas públicas solo leen copias aprobadas y esos límites quedan cubiertos por tests unitarios y E2E en CI.
- Validación
- Tests unitarios de repositorio, publicación y sanitización; pruebas E2E de caché, indexación y superficie pública; lint, typecheck y build en CI.
- Herramientas
- Next.js · TypeScript · Supabase · PostgreSQL · Vitest
Fases del proyecto
- 01
Modelo de amenazas
Qué había que proteger: sesiones, notas privadas, material profesional y evidencia técnica. Frente a quién: visitantes anónimos, bots, el propio propietario y un atacante con una sesión o un proveedor comprometidos.
- 02
Superficie de ataque
Los puntos de contacto entre partes: navegador y servidor, el Studio (el espacio privado de edición) y la base de datos, los datos de trabajo y la copia pública, y la web y las cachés o buscadores. Parámetros, Markdown, enlaces y metadatos se tratan como entrada no fiable.
- 03
Invariantes
Reglas que no se rompen: todo acceso privado se autoriza en el servidor y con permisos por fila (RLS); el navegador nunca decide a qué cuenta o espacio accede; las páginas públicas solo muestran campos permitidos de copias ya publicadas.
- 04
Controles
Lista cerrada de propietarios con doble factor, permisos por fila denegados por defecto, copias de publicación inmutables, campos públicos definidos uno a uno, limpieza del contenido, Markdown sin HTML activo, CSP y la clave de administración solo en el servidor.
- 05
Verificación
CI ejecuta formato, lint, typecheck, tests, build y recorridos públicos en Chromium y móvil; Dependabot revisa dependencias.
- 06
Riesgo residual
Los controles reducen exposición, no garantizan seguridad absoluta: quedan riesgos de sesión o proveedor comprometido y errores operativos que requieren validación continua.
Origen
Documentado a partir del código y la documentación del repositorio y, cuando existe, del sitio publicado.
- Fuente
- Repositorio privado
- Estado
- Análisis de arquitectura