Security Kit

Proporciona a Drupal varias opciones de refuerzo de seguridad a través de encabezados HTTP para mitigar riesgos de Cross-site Scripting (XSS), Cross-site Request Forgery (CSRF), Clickjacking, y mejorar la seguridad SSL/TLS.

seckit
70,351 sites
183
drupal.org

Instalar

Drupal 11, 10, 9, 8 v2.0.3
composer require 'drupal/seckit:^2.0'

Overview

Security Kit es un módulo de seguridad integral que mejora la postura de seguridad de su sitio web Drupal implementando varios encabezados de seguridad HTTP y protecciones del lado del navegador. Proporciona una interfaz de configuración centralizada para gestionar múltiples mecanismos de seguridad sin requerir configuración manual del servidor.

El módulo implementa encabezados Content Security Policy (CSP) para controlar qué recursos pueden cargar los navegadores, previniendo muchos ataques XSS. Soporta X-Frame-Options y protección contra clickjacking basada en JavaScript para evitar que su sitio sea incrustado en frames maliciosos. HTTP Strict Transport Security (HSTS) obliga a los navegadores a usar conexiones HTTPS, mientras que Certificate Transparency (Expect-CT) ayuda a detectar certificados emitidos fraudulentamente.

Las características adicionales incluyen validación del encabezado Origin para protección CSRF, encabezados Referrer-Policy para controlar la filtración de información del referrer, encabezados Feature-Policy para restringir características del navegador, y la capacidad de deshabilitar el autocompletado en formularios de inicio de sesión para prevenir la exposición de credenciales. El módulo también proporciona un endpoint integrado de reporte de violaciones CSP para monitorear violaciones de políticas.

Features

  • Encabezados Content Security Policy (CSP) con soporte integral de directivas incluyendo default-src, script-src, style-src, img-src y más, con encabezados opcionales con prefijo de proveedor para soporte de navegadores heredados
  • Configuración del encabezado X-XSS-Protection para controlar el comportamiento del filtro XSS del navegador
  • Encabezado X-Frame-Options (SAMEORIGIN, DENY, ALLOW-FROM) para prevención de clickjacking
  • Protección contra clickjacking con JavaScript + CSS + Noscript que oculta el contenido de la página cuando se muestra en frames no autorizados
  • HTTP Strict Transport Security (HSTS) con max-age configurable, inclusión de subdominios y soporte de preload
  • Encabezado Certificate Transparency (Expect-CT) con modo de aplicación y reporte de violaciones
  • Encabezado Feature-Policy para controlar el acceso a características del navegador como cámara, micrófono y geolocalización
  • Encabezado From-Origin para protección adicional de origen cruzado
  • Encabezado Referrer-Policy con múltiples opciones de política para controlar la exposición de información del referrer
  • Protección CSRF a través de validación del encabezado Origin con lista blanca configurable
  • Deshabilitación del autocompletado en formularios de inicio de sesión para prevenir el almacenamiento en caché de credenciales
  • Endpoint integrado de reporte de violaciones CSP en /report-csp-violation que registra violaciones en el watchdog de Drupal
  • Modo solo reporte para CSP para probar políticas sin aplicación

Use Cases

Implementando Content Security Policy para prevención de XSS

Habilite CSP para incluir en lista blanca fuentes de recursos confiables. Comience con modo solo reporte para identificar recursos que serían bloqueados, luego revise los logs en /admin/reports/dblog. Configure directivas como script-src 'self' para solo permitir scripts de su dominio. Gradualmente refuerce la política eliminando 'unsafe-inline' y usando nonces o hashes para scripts inline.

Previniendo ataques de clickjacking

Habilite X-Frame-Options con SAMEORIGIN o DENY para prevenir que su sitio sea incrustado en frames en sitios maliciosos. Para sitios que necesitan ser incrustados por socios específicos, use ALLOW-FROM con el origen del socio. Habilite la protección JavaScript + CSS + Noscript para defensa en profundidad contra clickjacking.

Aplicando HTTPS con HSTS

Después de asegurar que su sitio funciona correctamente sobre HTTPS, habilite HSTS con un max-age corto inicialmente (ej., 300 segundos). Pruebe exhaustivamente, luego aumente max-age a 31536000 (1 año). Habilite includeSubDomains si todos los subdominios soportan HTTPS. Solo habilite preload después de confirmar que el sitio siempre será HTTPS y envíelo a hstspreload.org.

Monitoreando violaciones de políticas de seguridad

Habilite CSP en modo solo reporte con el endpoint por defecto /report-csp-violation. Las violaciones se registran en el watchdog de Drupal. Revise los logs regularmente para identificar recursos legítimos siendo bloqueados e intentos de ataque potenciales. Use servicios de reporte externos configurando un report-uri personalizado para monitoreo en producción.

Protegiendo formularios sensibles contra robo de credenciales

Habilite la característica de deshabilitación de autocompletado para prevenir que los navegadores almacenen en caché nombres de usuario y contraseñas ingresados en formularios de inicio de sesión y registro. Esto es particularmente importante para computadoras compartidas o terminales públicas.

Controlando la exposición de información del referrer

Habilite Referrer-Policy con strict-origin-when-cross-origin para prevenir la filtración de URLs completas a sitios externos mientras mantiene la información del referrer para solicitudes del mismo origen y analíticas. Use no-referrer para sitios altamente sensibles donde las rutas de URL podrían contener información sensible.

Tips

  • Comience con modo solo reporte para CSP para entender qué sería bloqueado antes de aplicar la política
  • Use las herramientas de desarrollo del navegador (pestaña Network, Consola) para verificar que los encabezados de seguridad se estén enviando correctamente
  • Pruebe X-Frame-Options intentando incrustar su sitio en un iframe en un dominio diferente
  • Mantenga HSTS max-age bajo inicialmente cuando pruebe, luego aumente a al menos 1 año para producción
  • La directiva CSP 'unsafe-inline' debilita significativamente la protección - intente eliminar scripts y estilos inline
  • Considere usar nonces o hashes de CSP en lugar de 'unsafe-inline' para scripts inline necesarios
  • Revise los logs de violaciones CSP regularmente para detectar ataques potenciales e identificar recursos legítimos que necesitan ser incluidos en la lista blanca
  • Feature-Policy está siendo reemplazado por Permissions-Policy en navegadores más nuevos - monitoree el soporte de navegadores
  • Pruebe los encabezados de seguridad usando herramientas en línea como securityheaders.com o Mozilla Observatory

Technical Details

Admin Pages 1
Configuración de Security Kit /admin/config/system/seckit

Página de configuración central para todas las características de seguridad de Security Kit. Permite a los administradores habilitar y configurar varios encabezados de seguridad HTTP y mecanismos de protección del lado del navegador para reforzar la instalación de Drupal contra vulnerabilidades web comunes.

Permisos 1

Configurar características de seguridad de su instalación de Drupal. Este permiso debe restringirse a administradores de confianza ya que controla configuraciones de seguridad de todo el sitio. Marcado como 'restringir acceso' por seguridad.

Troubleshooting 6
Funcionalidad del sitio rota después de habilitar CSP

Habilite CSP en modo solo reporte primero marcando la opción 'Solo reporte'. Revise los reportes de violaciones CSP en los logs de Drupal en /admin/reports/dblog para identificar qué recursos están siendo bloqueados. Agregue fuentes de recursos legítimas a las directivas apropiadas (script-src, style-src, etc.). Problemas comunes incluyen scripts inline que requieren 'unsafe-inline' o recursos de terceros que necesitan permitir explícitamente el origen.

X-Frame-Options rompiendo incrustación legítima en iframe

Si su sitio necesita ser incrustado en iframes en sitios externos específicos, cambie X-Frame-Options de DENY a ALLOW-FROM y especifique el origen permitido. Note que ALLOW-FROM solo soporta un único origen. Para múltiples orígenes, considere usar la directiva CSP frame-ancestors que soporta múltiples valores.

HSTS preload no funciona

Asegúrese de que max-age sea al menos 31536000 segundos (1 año), includeSubDomains esté habilitado, y el encabezado HSTS se sirva desde el dominio raíz sobre HTTPS. Envíe su dominio a hstspreload.org solo después de confirmar estos requisitos y que todos los subdominios soporten HTTPS.

Reportes CSP no se están registrando

Verifique que report-uri esté configurado en /report-csp-violation (el predeterminado). Asegúrese de que su sitio sea accesible en esta ruta. Verifique que CSP esté habilitado (ya sea aplicado o solo reporte). Para reportes de origen cruzado, asegúrese de que el endpoint de reporte acepte la solicitud verificando los logs del servidor.

Verificación CSRF del encabezado Origin bloqueando solicitudes legítimas

Agregue el origen legítimo a la lista blanca de 'Orígenes permitidos'. El formato debe ser el origen completo incluyendo el protocolo (ej., https://sitio-confiable.com). Asegúrese de que no haya barras diagonales finales en las entradas de la lista blanca.

Encabezados de seguridad no aparecen en las respuestas

Verifique que el módulo esté habilitado y configurado. Verifique si un proxy inverso o CDN está eliminando encabezados. Algunos entornos de hosting pueden sobrescribir o eliminar encabezados de seguridad. Use las herramientas de desarrollo del navegador (pestaña Network) para inspeccionar los encabezados de respuesta reales.

Security Notes 8
  • Todas las características de seguridad están deshabilitadas por defecto para prevenir romper la funcionalidad del sitio - habilite características conscientemente después de probar
  • El permiso 'administer seckit' está marcado como 'restringir acceso' y solo debe otorgarse a administradores de alta confianza
  • CSP puede romper la funcionalidad del sitio si está mal configurado - siempre pruebe en modo solo reporte primero
  • HSTS con preload es difícil de deshacer - solo habilite después de confirmar compromiso permanente con HTTPS
  • X-Frame-Options ALLOW-FROM está obsoleto en navegadores modernos - use CSP frame-ancestors para mejor soporte
  • La verificación CSRF del encabezado Origin puede no funcionar con todos los navegadores - es defensa en profundidad, no protección CSRF primaria
  • Deshabilitar autocompletado puede entrar en conflicto con gestores de contraseñas - considere las implicaciones de experiencia de usuario
  • Algunos encabezados de seguridad pueden ser sobrescritos por la configuración del servidor o proxies inversos - verifique los encabezados reales enviados