Principios de Seguridad — Basados en Datos

Diseña tu aplicación por principios, no por parches. Los datos muestran que controles en capas reducen la velocidad e impacto de las brechas.
Principios

Principios clave

Principio de menor privilegio: limita el acceso (usuarios, servicios, claves). Defensa en profundidad: aplica múltiples controles independientes (p.ej. validación + CSP + sanitización). Fallar seguro: los valores por defecto son seguros; los errores revelan información mínima.

Consejos basados en datos

Monitorea métricas clave: fallos de autenticación, tasas de restablecimiento de contraseña, picos de excepciones, rechazo de JWT, tasas 4xx/5xx. Usa umbrales y detección de anomalías — la sintonización automatizada reduce el tiempo medio de detección (MTTD).

Checklist

OWASP Top 10 mapeado a políticas

Mapea cada elemento del Top 10 a una política concreta y controles medibles (SLA para remediación, pipelines CI, escáneres).

Aspectos destacados del Top-10

  1. A01:2021 – Control de Acceso Roto → aplicar RBAC, ABAC, probar reglas
  2. A02 – Fallos Criptográficos → gestión de claves, TLS, MFA para operaciones con claves
  3. A03 – Inyección → sentencias preparadas, consultas parametrizadas
  4. A04 – Diseño Inseguro → modelos de amenaza, revisiones de diseño seguro
  5. A05 – Configuración de Seguridad Incorrecta → imágenes endurecidas, escaneos automatizados
  6. A06 – Componentes Vulnerables → escaneo de dependencias, fijado de versiones
  7. A07 – Identificación & Autenticación → multifactor, rotación de tokens
  8. A08 – Fallos de Integridad de Software & Datos → artefactos firmados, builds reproducibles
  9. A09 – Registro & Monitorización de Seguridad → retención, alertas, integración SOAR
  10. A10 – SSRF y otros → lista de denegación de egress, proxies de egress

Mapeo accionable

Para cada elemento OWASP: a) prevenir con código/configuración, b) detectar con pruebas y sensores en tiempo de ejecución, c) responder con un playbook de incidentes. Ejemplo: Control de Acceso Roto → pruebas de acceso automatizadas + logs de auditoría RBAC en tiempo de ejecución.
MTTD
Objetivo: < 24h
MTTR
Objetivo: < 72h
Cobertura
SAST/DAST ≥ 90%

Autenticación & Autorización

Haz la fricción de autenticación inteligente: protege la recuperación de cuentas, rota claves, exige MFA en rutas sensibles.
Autenticación

Diseño & controles

  • Usa hashing fuerte para contraseñas (Argon2id preferido; bcrypt o scrypt aceptables). Usa sal por usuario y parámetros memory-hard ajustados a latencia y coste.
  • Prefiere tokens de acceso de corta duración + refresh con rotación. Usa el patrón de rotación de refresh tokens para detectar robos.
  • Implementa MFA (TOTP + push + FIDO2) para todas las operaciones privilegiadas y administradores.
  • Aplica bloqueo/backoff de cuentas y notifica sobre restablecimientos sospechosos.

Código & configuración

Ejemplo: comprobación de autorización (pseudo express)
// Principio: comprobar privilegios en cada punto de entrada
async function authorize(user, resource, action){
  // ejemplo mínimo: ABAC + denegación explícita
  if(!user || user.disabled) throw new Error('unauthenticated');
  const policy = await getPolicyFor(resource);
  if(policy.deny.includes(user.role)) throw new Error('forbidden');
  if(!policy.allowedActions.includes(action)) throw new Error('forbidden');
  // registrar decisión para auditoría
  audit('authz', {user:user.id, resource, action});
  return true;
}

Checklist

Validación de Entradas & XSS

Valida pronto, codifica tarde. Nunca confíes en la entrada del cliente; usa listas permitidas. Prefiere la codificación contextual para prevenir XSS.

Prevención de XSS

  1. Usa codificación de salida del servidor para contextos HTML, JS, URL, CSS. Usa frameworks de plantillas con codificación automática.
  2. Implementa CSP con directivas estrictas y nonces cuando sea posible. Evita scripts/estilos inline.
  3. Sanitiza HTML no confiable solo con una librería segura y una lista permitida.

Ejemplo de cabecera CSP

Línea base estricta recomendada con nonce
Content-Security-Policy:
  default-src 'none';
  script-src 'self' 'nonce-';
  style-src 'self' 'nonce-';
  img-src 'self' data:;
  connect-src 'self' https://api.example.com;
  frame-ancestors 'none';
  base-uri 'self';
  block-all-mixed-content;

Checklist

Sesiones & Cookies

Protege los tokens de sesión en reposo, en tránsito y durante la rotación. Prefiere cookies con atributos estrictos para sesiones en navegador.

Atributos de cookies

Set-Cookie: session=eyJ...; HttpOnly; Secure; SameSite=Strict; Path=/; Max-Age=3600

HttpOnly evita acceso desde JS; Secure exige TLS; SameSite mitiga CSRF (Lax/Strict según UX).

Buenas prácticas de sesión

  • TTL corto de sesión para aplicaciones sensibles. Usa refresh tokens para mejor UX con rotación de refresh.
  • Almacena estado de sesión en servidor o usa tokens firmados/encriptados con audience y expiración.
  • Invalidar sesiones al restablecer contraseña o cerrar sesión; proveer API de revocación de sesiones para administradores.

Checklist

Capa de Transporte & TLS

TLS fuerte y gestión adecuada de certificados son imprescindibles. Prefiere TLS 1.3, secreto hacia adelante y validación estricta de certificados.

Esenciales de configuración TLS

  • TLS 1.3 siempre que sea posible. Si soportas TLS 1.2, desactiva cifrados débiles; habilita ECDHE para secreto hacia adelante.
  • Cabecera HSTS con max-age largo y preload cuando esté listo: Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
  • OCSP stapling habilitado; monitoriza expiración de certificados y automatiza renovación (ACME).

Ejemplo de snippet para Nginx

# nginx TLS 1.3 strong config
ssl_protocols TLSv1.3 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_session_tickets off;
ssl_stapling on;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

Checklist

Cabeceras de Seguridad & CSP (profundo)

Usa cabeceras en capas: CSP, HSTS, X-Frame-Options, Referrer-Policy, Permissions-Policy. Cabeceras estrictas reducen la superficie de explotación.

Cabeceras esenciales

Referrer-Policy: no-referrer-when-downgrade
Permissions-Policy: camera=(), microphone=(), geolocation=()
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Expect-CT: max-age=86400, enforce

Desplegando CSP gradualmente

Comienza en modo report-only para recopilar violaciones: usa report-uri/report-to. Luego itera hacia la aplicación. Considera nonces o hashes para inline scripts necesarios.

Checklist

Almacenamiento & Protección de Datos

Encripta datos sensibles en reposo y en tránsito. Aplica cifrado por campo para PII y protege claves con KMS/HSM y políticas de rotación.

Gestión de claves

  • Usa KMS gestionado con políticas IAM fuertes y principio de menor privilegio. Rota claves trimestralmente o según política.
  • Nunca almacenes credenciales o secretos en código o texto plano. Usa gestores de secretos y credenciales efímeras (roles IAM).

Minimización de datos & retención

Recolecta solo los datos necesarios; aplica políticas de retención y eliminación automática; usa seudonimización cuando sea posible.

Checklist

Dependencias & Seguridad de la Cadena de Suministro

Trata el código de terceros como de alto riesgo: escanea, fija versiones, valida y firma artefactos. Usa builds reproducibles y dependencias mínimas.

Pasos prácticos

  • Generación automatizada de SBOM y escaneo de dependencias (Snyk, OSS Index, etc.). Bloquea vulnerabilidades críticas en puertas CI/CD.
  • Fija dependencias y prefiere lockfiles. Configura alertas para problemas de dependencias transitivas.
  • Firma artefactos (imágenes, paquetes) y verifica firmas en políticas de despliegue en producción.

Checklist

CI/CD & Pruebas

Shift left: ejecuta SAST, checks de dependencias, escaneo de secretos y generación de SBOM en CI. Usa pipelines reproducibles y runners con menor privilegio.

Controles de pipeline

  • Fallar builds en hallazgos de severidad alta. Proveer PRs automáticos para remediaciones de severidad baja/mediana cuando sea seguro.
  • Aislar entornos de build y rotar tokens de servicio entre etapas. Usar runners efímeros para reducir exposición.
  • Automatizar escaneos de infraestructura (IaC) y aplicar imágenes base seguras.

Checklist

Registro, Monitorización & Respuesta a Incidentes

Diseña el registro para detección y análisis forense. Centraliza logs, asegura inmutabilidad/retención y realiza simulacros de playbook.

Esenciales de monitorización

  • Registrar decisiones de autenticación, errores críticos y violaciones de políticas. La telemetría debe incluir request IDs y contexto de usuario para trazabilidad.
  • Crear alertas sobre patrones anómalos (credential stuffing, tráfico súbito a endpoints admin, picos en 401/403).
  • Realizar ejercicios de mesa y automatizar pasos de IR cuando sea posible: aislar contenedor, rotar claves, revocar sesiones.

Checklist

Checklist Maestro (Exportable)

Todos los items reunidos. Usa exportar a CSV para integrar con trackers.

Cuestionario Rápido — Pon a prueba lo básico

Selecciona la mejor respuesta y envía. Retroalimentación inmediata.

1) ¿Mejor cabecera para forzar HTTPS?
2) ¿Hash recomendado para contraseñas?