🛡️ Checklist de Seguridad Web

Auditoría interactiva con scoring ponderado

HTTPS y Certificado SSL
💡 Google penaliza sitios sin HTTPS. Usa Let's Encrypt (gratis) o el SSL de tu hosting.
×3
💡 Agrega el header: Strict-Transport-Security: max-age=31536000; includeSubDomains
×2
💡 Cambia todas las URLs internas de http:// a https:// o usa // (protocol-relative).
×2
Headers de Seguridad
💡 Agrega: X-Frame-Options: SAMEORIGIN en tu .htaccess o config del servidor.
×2
💡 Previene que el navegador interprete archivos con MIME type incorrecto.
×1
💡 Agrega: X-XSS-Protection: 1; mode=block (legacy pero útil para IE).
×1
💡 CSP previene inyección de scripts maliciosos. Empieza con: default-src 'self'
×3
💡 Usa: Referrer-Policy: strict-origin-when-cross-origin
×1
💡 Controla acceso a APIs del navegador: geolocalización, cámara, micrófono, etc.
×1
Autenticación y Sesiones
💡 Nunca almacenes passwords en texto plano. Usa password_hash() en PHP.
×3
💡 TOTP (Google Authenticator) o SMS como segundo factor.
×2
💡 session.cookie_httponly=1 y session.cookie_secure=1 en php.ini
×2
💡 Genera un token único por formulario y valídalo en cada POST.
×3
💡 Limita intentos de login: máximo 5 intentos, luego bloqueo temporal.
×2
Validación de Datos
💡 Usa SIEMPRE prepared statements con PDO o MySQLi. Nunca concatenes variables en SQL.
×3
💡 htmlspecialchars() en PHP para todo output. Nunca imprimas datos del usuario sin escapar.
×3
💡 Verifica MIME type real (no solo extensión), limita tamaño y guarda fuera de public_html.
×2
💡 La validación en JavaScript se puede saltar. Siempre valida también en el backend.
×2
Infraestructura
💡 El 60% de los hackeos explotan vulnerabilidades conocidas en software desactualizado.
×3
💡 Backup diario de archivos y base de datos. Prueba la restauración regularmente.
×2
💡 display_errors=Off en producción. Registra errores en logs, no los muestres al usuario.
×2
💡 Agrega: Options -Indexes en tu .htaccess
×1
💡 Bloquea acceso en .htaccess: FilesMatch para .env, .git, .sql, .log
×2
💡 No uses Disallow para ocultar carpetas sensibles — eso las hace más visibles.
×1

¿Cómo funciona el scoring?

Cada punto del checklist tiene un peso (×1 a ×3) según su impacto en la seguridad. Los puntos críticos como SQL Injection, HTTPS y CSRF tienen peso ×3.

80-100%: 🛡️ Excelente — Tu sitio sigue las mejores prácticas.

60-79%: ✅ Bueno — Hay margen de mejora en algunos puntos.

40-59%: ⚠️ Regular — Vulnerabilidades importantes sin cubrir.

0-39%: 🚨 Crítico — Tu sitio necesita atención urgente.