Guides

Checklist de seguridad antes de producción

20 verificaciones de seguridad imprescindibles antes de poner tu aplicación web en producción. Headers, auth, cifrado, logs.

18 avril 20265 min de lectureWarDek Team

Poner una aplicación web en producción sin pasar una checklist de seguridad es como entregar las llaves de tu casa con la puerta abierta. Esta lista de 20 verificaciones cubre los puntos críticos que debes comprobar antes de que tu aplicación sea accesible públicamente.

HTTPS y cifrado

1. Certificado SSL/TLS válido

  • Certificado emitido por una CA reconocida (Let's Encrypt, DigiCert)
  • Fecha de expiración con margen suficiente (alertas configuradas)
  • Cadena de certificados completa (incluyendo intermedios)

2. Versión TLS

  • TLS 1.2 como versión mínima
  • TLS 1.3 habilitado y preferido
  • TLS 1.0 y 1.1 desactivados
  • SSL v2 y v3 desactivados

3. Redirección HTTPS

  • Redirección 301 de HTTP a HTTPS
  • HSTS habilitado (Strict-Transport-Security)
  • No hay contenido mixto (mixed content)

Headers de seguridad

4. Headers obligatorios

  • Strict-Transport-Security: max-age=31536000; includeSubDomains
  • X-Content-Type-Options: nosniff
  • X-Frame-Options: SAMEORIGIN
  • Referrer-Policy: strict-origin-when-cross-origin

5. Content Security Policy

  • CSP configurada y funcionando
  • script-src restrictivo (no unsafe-inline ni unsafe-eval si posible)
  • default-src 'self' como base
  • Report-uri o report-to configurado para monitorizar violaciones

6. CORS

  • Access-Control-Allow-Origin restrictivo (no * en producción)
  • Métodos permitidos específicos (no *)
  • Headers permitidos explícitos

Autenticación y sesiones

7. Contraseñas

  • Hashing con bcrypt, argon2 o scrypt (nunca MD5/SHA1)
  • Salt único por usuario
  • Política de complejidad mínima (12+ caracteres)
  • No almacenar contraseñas en claro en ningún lugar (logs, BD, emails)

8. Sesiones

  • Tokens de sesión con entropía suficiente
  • Cookies de sesión: Secure, HttpOnly, SameSite=Lax
  • Expiración de sesión razonable (30 min inactividad, 24h máximo)
  • Regeneración de token tras login

9. MFA

  • MFA disponible para todos los usuarios
  • MFA obligatorio para cuentas admin
  • Códigos de recuperación proporcionados

Validación y protección de datos

10. Validación de inputs

  • Validación server-side para TODOS los inputs (Zod, Joi, Yup)
  • Validación client-side como mejora UX (nunca como único control)
  • Sanitización de outputs (prevención XSS)
  • Prevención de inyección SQL (queries parametrizadas, ORM)

11. Rate limiting

  • Rate limiting en endpoints de autenticación (login, registro, reset password)
  • Rate limiting en API endpoints (por IP y por usuario)
  • Rate limiting en formularios públicos (contacto, newsletter)

12. Upload de archivos

  • Validación de tipo MIME real (no solo extensión)
  • Límite de tamaño configurado
  • Archivos almacenados fuera del directorio web
  • Nombres de archivo regenerados (no usar el nombre original)
  • Escaneo antivirus si aplica

Infraestructura

13. Variables de entorno

  • Todas las credenciales en variables de entorno (no en código)
  • Archivo .env en .gitignore
  • .env.example sin valores reales
  • Validación de env vars al arrancar (Zod)

14. Errores y logs

  • Mensajes de error genéricos para el usuario (no stack traces)
  • Stack traces y errores detallados solo en logs del servidor
  • Logs no contienen datos sensibles (contraseñas, tokens, PII)
  • Centralización de logs (Sentry, ELK, Datadog)
  • Alertas configuradas para errores críticos

15. Dependencias

  • npm audit o pnpm audit sin vulnerabilidades críticas
  • Dependencias actualizadas (especialmente las de seguridad)
  • Lock file (package-lock.json o pnpm-lock.yaml) commiteado
  • No hay dependencias con licencias incompatibles

Base de datos

16. Seguridad BD

  • Credenciales únicas por entorno (dev ≠ staging ≠ prod)
  • Conexión cifrada (SSL) a la base de datos
  • Usuario de BD con mínimos privilegios necesarios
  • Backups automáticos configurados y verificados
  • No hay acceso público directo a la BD (solo desde el backend)

Configuración del servidor

17. Server hardening

  • Información del servidor oculta (no revelar versión de nginx/Apache)
  • Directory listing desactivado
  • Archivos sensibles bloqueados (.git, .env, backups, logs)
  • Puertos innecesarios cerrados
  • Firewall configurado

18. DNS y dominio

  • Registros DNS correctos (A, AAAA, CNAME)
  • SPF, DKIM y DMARC configurados para emails
  • CAA record si quieres restringir CAs
  • DNSSEC si tu registrador lo soporta

Cumplimiento legal

19. RGPD y privacidad

  • Política de privacidad publicada y accesible
  • Banner de cookies conforme (aceptar + rechazar visibles)
  • Cookies no esenciales bloqueadas antes del consentimiento
  • Formularios con checkbox de consentimiento
  • Canal para ejercicio de derechos ARCO

20. Escaneo final

  • Escaneo WarDek completo ejecutado
  • Puntuación OWASP ≥ 70/100
  • Puntuación RGPD ≥ 70/100
  • Todos los problemas críticos corregidos
  • Problemas medios planificados para corrección

Puntuación pre-producción

Checks completadosResultadoAcción
18-20Listo para producciónDeploy con confianza
14-17Casi listoCorregir los puntos faltantes antes de deploy
10-13No listoRiesgos significativos, corregir antes de exponer
Menos de 10CríticoNo desplegar hasta resolver

Escanea tu sitio web gratis con WarDek — OWASP, NIS2, RGPD, AI Act en un solo escaneo.

#seguridad-web#checklist#produccion#pre-deploy

Scannez votre site gratuitement

WarDek détecte les vulnérabilités mentionnées dans cet article en quelques secondes.