Cabeceras de seguridad HTTP para PrestaShop 8.x y 9.x
La seguridad de una tienda online no termina en el certificado SSL. Las cabeceras HTTP de seguridad son una capa de protección fundamental que la mayoría de instalaciones de PrestaShop ignoran por completo, y que herramientas como securityheaders.com evalúan y puntúan públicamente.
Este post presenta PS Security Headers by Disciplina Digital, un módulo gratuito para PrestaShop que añade automáticamente todas las cabeceras de seguridad recomendadas desde el propio Back Office, sin tocar ningún archivo de configuración del servidor, compatible con PrestaShop 8.x y 9.x.
¿Por qué importan las cabeceras de seguridad en tu tienda?
Cuando un navegador carga tu tienda, el servidor envía una serie de cabeceras HTTP junto con la respuesta. La mayoría son técnicas e invisibles para el usuario, pero los atacantes y los bots las leen con atención. Sin las cabeceras adecuadas, tu tienda es vulnerable a ataques como:
Una instalación de PrestaShop (Wordpress peor aún) por defecto expone todas estas vulnerabilidades. El informe de securityheaders.com lo refleja con una calificación F.
✗ Strict-Transport-Security
✗ Content-Security-Policy
✗ X-Frame-Options
✗ X-Content-Type-Options
✗ Referrer-Policy
✗ Permissions-Policy
¿Qué hace PS Security Headers?
El módulo engancha el hook actionOutputHTMLBefore de PrestaShop para inyectar todas las cabeceras de seguridad recomendadas en cada respuesta HTTP, tanto en el front como en el Back Office. Todo se gestiona desde un panel de configuración visual: cada cabecera tiene su propio interruptor y un campo editable para personalizar el valor.
✓ Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
✓ Content-Security-Policy: default-src 'self'; ...
✓ X-Frame-Options: SAMEORIGIN
✓ X-Content-Type-Options: nosniff
✓ Referrer-Policy: strict-origin-when-cross-origin
✓ Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=()
✓ Cross-Origin-Embedder-Policy: unsafe-none
✓ Cross-Origin-Opener-Policy: same-origin-allow-popups
✓ Cross-Origin-Resource-Policy: same-origin
Además elimina las cabeceras Server y X-Powered-By que delatan la versión de PHP y el software del servidor.
Cabeceras incluidas en el módulo gratuito
Strict-Transport-Security (HSTS)
Obliga al navegador a usar siempre HTTPS para tu dominio. Con el valor por defecto incluye subdominios y la directiva preload para inscribir el dominio en la lista de precarga de los navegadores.
Content-Security-Policy (CSP)
La cabecera más potente. Define exactamente desde qué orígenes puede cargar recursos tu tienda: scripts, estilos, imágenes, fuentes, iframes… Bloquea la ejecución de cualquier recurso no autorizado, eliminando prácticamente el riesgo de XSS. El valor por defecto es compatible con el core de PrestaShop.
X-Frame-Options
Impide que tu tienda sea embebida en un <iframe> desde otro dominio. Protección directa contra clickjacking. Valor por defecto: SAMEORIGIN.
X-Content-Type-Options
Evita que el navegador intente adivinar el tipo de contenido de una respuesta. El único valor válido es nosniff y es el que se aplica.
Referrer-Policy
Controla qué información de procedencia se envía cuando un usuario navega desde tu tienda hacia otro sitio. El valor por defecto strict-origin-when-cross-origin es el equilibrio recomendado entre privacidad y funcionalidad.
Permissions-Policy
Restringe el acceso del navegador a APIs sensibles como cámara, micrófono, geolocalización o pagos. Una tienda de comercio electrónico no necesita acceder a ninguna de ellas por defecto.
Cross-Origin-Embedder / Opener / Resource Policy
Las tres cabeceras CORS avanzadas que controlan cómo tu tienda interactúa con recursos y ventanas de otros orígenes. Completamente configurables desde el panel.
Eliminación de Server y X-Powered-By
Dos cabeceras que no aportan nada al usuario pero revelan a los atacantes qué software y versión usa tu servidor. El módulo las elimina con header_remove() en cada respuesta.
Arquitectura del módulo: SRP aplicado a PrestaShop
El módulo está desarrollado siguiendo el Principio de Responsabilidad Singular (SRP). Cada clase tiene una única razón para cambiar, lo que facilita el mantenimiento y la extensión futura:
security_headers_dd/
├── security_headers_dd.php ← Orquestador: hooks y bootstrapping
└── src/
├── HeaderDefinition.php ← Value object inmutable por cabecera
├── HeaderRegistry.php ← Catálogo central de todas las cabeceras
├── HeaderConfiguration.php ← Lectura/escritura en PS Configuration
├── HeaderEmitter.php ← Envío de headers HTTP
└── HeaderFormBuilder.php ← Formulario del Back Office
El fichero principal del módulo delega completamente en estas clases. Si en el futuro necesitas añadir una cabecera nueva, solo tocas HeaderRegistry.php. Si cambias el almacenamiento, solo tocas HeaderConfiguration.php. El resto permanece intacto.
Cómo instalar PS Security Headers en PrestaShop
Descarga el módulo
Descarga gratuitamente el archivo security_headers_dd.zip desde el enlace de abajo.
Instala desde el Back Office
Ve a Módulos > Gestor de módulos > Subir un módulo y sube el archivo ZIP. PrestaShop instalará el módulo y aplicará los valores por defecto automáticamente.
Configura según tu tienda
Accede a Módulos > PS Security Headers > Configurar. Revisa cada cabecera, activa o desactiva las que necesites y ajusta los valores según los servicios externos que uses (Google Fonts, GTM, Stripe, etc.).
Verifica el resultado
Analiza tu dominio en securityheaders.com. Deberías pasar de una calificación F a una A o A+ en cuestión de segundos.
Beneficios para tu tienda
Calificación A
De F a A en securityheaders.com tras la instalación
Sin tocar el servidor
Todo desde el Back Office, sin editar .htaccess ni nginx.conf
100% configurable
Cada cabecera activable y editable individualmente
PS 8 y PS 9
Compatible con ambas versiones mayores de PrestaShop
Código limpio
SRP, PHP 8+, sin dependencias externas
Gratuito
Libre para usar, modificar y distribuir
Advertencia importante: Content-Security-Policy
La CSP por defecto incluida en el módulo es funcional con el core de PrestaShop, pero si tu tienda carga recursos externos debes añadirlos manualmente a la directiva correspondiente. Recursos habituales que requieren ajuste:
- Google Fonts (
fonts.googleapis.com,fonts.gstatic.com) - Google Tag Manager / Google Analytics (
*.google-analytics.com,*.googletagmanager.com) - Pasarelas de pago con iframes (Stripe, PayPal, Redsys…)
- CDNs de scripts o estilos externos
- Widgets de chat o herramientas de marketing
Una CSP incorrecta puede bloquear recursos legítimos y romper funcionalidades de tu tienda. Verifica siempre la consola del navegador tras activarla y ajusta los orígenes necesarios antes de pasar a producción.
Descarga gratuita
El módulo es completamente gratuito. Si te resulta útil y quieres apoyar su desarrollo, puedes invitarme a un café:
Sin donación también puedes descargarlo sin problema. El código es libre.