Cabeceras de seguridad HTTP para PrestaShop 8.x y 9.x

PS Security Headers - Free PrestaShop Module by Disciplina Digital 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:

XSS (Cross-Site Scripting) — inyección de código malicioso en páginas de tu tienda
Clickjacking — embeber tu tienda en un iframe para engañar a tus clientes
MIME Sniffing — el navegador ejecuta un archivo como un tipo distinto al declarado
Information Disclosure — exponer la versión de PHP o el servidor web facilita ataques dirigidos
Downgrade attacks — forzar conexiones HTTP no cifradas
Cross-origin attacks — acceso no autorizado a recursos entre dominios

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.

Cabeceras ausentes en una instalación estándar de PrestaShop
✗ 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.

Resultado tras instalar el módulo
✓ 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:

Estructura de archivos
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

1
Descarga el módulo

Descarga gratuitamente el archivo security_headers_dd.zip desde el enlace de abajo.

2
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.

3
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.).

4
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.

La instalación completa lleva menos de cinco minutos y no requiere ningún cambio en el servidor ni en los archivos de PrestaShop.

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.