Cómo añadir cabeceras de seguridad HTTP en PrestaShop
¿Por qué son importantes las cabeceras de seguridad HTTP en PrestaShop?
Cuando hablamos de proteger una tienda online, normalmente pensamos en contraseñas fuertes o en tener un buen antivirus. Pero hay una capa de protección que ocurre "detrás de escena" y que es igual de crucial: las cabeceras de seguridad HTTP.
Imagina que tu tienda PrestaShop es una casa. Las cerraduras y alarmas son el módulo de seguridad. Las cabeceras HTTP son como los cristales blindados de las ventanas: no impiden que alguien llame a la puerta, pero hacen muchísimo más difícil que un atacante pueda colarse por una rendija.
Cada vez que un navegador (Chrome, Firefox, Safari) visita tu tienda, tu servidor le envía una serie de instrucciones invisibles llamadas cabeceras. Estas instrucciones le dicen al navegador cómo comportarse al cargar la página. Si configuramos estas cabeceras correctamente, podemos bloquear ataques muy comunes como el clickjacking, la inyección de scripts maliciosos (XSS) o el robo de sesiones.
En este artículo, te voy a guiar paso a paso para que puedas añadir estas cabeceras de seguridad en PrestaShop, incluso si no eres un experto en programación. Vamos a ello.
¿Qué son exactamente las cabeceras de seguridad HTTP?
Las cabeceras HTTP son pequeños fragmentos de información que viajan entre el servidor y el navegador. Piensa en ellas como una etiqueta que el servidor pega en el paquete que envía. Dentro de ese paquete va el contenido de tu web (HTML, CSS, JavaScript), pero la etiqueta incluye reglas de manejo.
Las cabeceras de seguridad son un conjunto específico de estas etiquetas que activan protecciones en el navegador del visitante. No necesitas ser un hacker para entenderlas; solo necesitas saber qué hace cada una y cómo activarlas.
Las 5 cabeceras imprescindibles para PrestaShop
Para proteger tu tienda de forma efectiva, nos centraremos en estas cinco, que son el estándar de la industria:
- Content-Security-Policy (CSP): Esta es la más poderosa. Le dice al navegador de qué sitios puede cargar recursos (imágenes, scripts, estilos). Si un atacante intenta inyectar código malicioso desde otro dominio, el navegador lo bloqueará automáticamente. Es la mejor defensa contra ataques XSS.
- X-Frame-Options: Esta cabecera es específica para evitar el clickjacking. El clickjacking es una técnica donde un atacante pone un iframe invisible sobre tu página para engañar al usuario y que haga clic en botones sin saberlo (por ejemplo, "Aceptar" o "Comprar"). Con
X-Frame-Options: SAMEORIGIN, le dices al navegador que solo tu propia web puede mostrar tu contenido en un marco. - X-Content-Type-Options: A veces los navegadores "adivinan" el tipo de archivo que están recibiendo si no está bien definido. Un atacante puede aprovechar esto para disfrazar un script malicioso como una imagen. Con
nosniff, fuerzas al navegador a respetar estrictamente el tipo de archivo declarado por el servidor. - Strict-Transport-Security (HSTS): Fuerza a que todas las conexiones con tu tienda se hagan mediante HTTPS (la "S" de seguro). Si alguien intenta acceder por HTTP, el navegador lo redirigirá automáticamente a la versión segura, evitando ataques de intermediario (Man-in-the-Middle).
- Referrer-Policy: Controla cuánta información de la URL se envía a otros sitios cuando un usuario hace clic en un enlace. Esto protege la privacidad de tus clientes y evita que se filtren datos sensibles de la URL.
Cómo añadir cabeceras de seguridad en PrestaShop: 3 métodos
Existen varias formas de implementar estas cabeceras. Te mostraré las tres más comunes, ordenadas de la más sencilla a la más técnica. Elige la que mejor se adapte a tu nivel de comodidad.
Método 1: Usar un módulo de seguridad (El más fácil)
Si no quieres tocar código, esta es tu opción. PrestaShop tiene un mercado lleno de módulos de seguridad que hacen todo el trabajo por ti.
Pasos a seguir:
- Ve al panel de administración de tu PrestaShop.
- Navega hasta Módulos > Módulos y Servicios.
- En el buscador, escribe "seguridad cabeceras" o "security headers".
- Instala un módulo que tenga buenas valoraciones y que sea compatible con tu versión de PrestaShop. Algunos populares son "Security Headers", "HTTP Security Headers" o los que vienen incluidos en suites de seguridad completas.
- Una vez instalado, ábrelo. La mayoría de estos módulos tienen una interfaz con interruptores (on/off) para activar cada cabecera.
- Activa las cinco que te he mencionado antes. Si el módulo te da opciones, elige los valores que te indicaré en la tabla de abajo.
- Guarda los cambios. El módulo se encargará de insertar el código necesario en tu servidor.
[TIP]: Antes de activar la cabecera Content-Security-Policy, muchos módulos te ofrecen un "modo de prueba" o "modo report". Actívalo primero. Si ves que tu tienda se ve rara o que algunos elementos no cargan (como el carrito o el buscador), significa que la CSP es demasiado estricta y tendrás que ajustar los valores en la configuración del módulo.
Método 2: Editar el archivo .htaccess (El más común)
Este método es muy popular porque no requiere instalar nada extra, solo un editor de texto (como el Bloc de notas) y acceso a los archivos de tu hosting. El archivo .htaccess es un archivo de configuración que afecta a Apache (el servidor web que usa casi todo el mundo).
Pasos a seguir:
- Conéctate a tu hosting mediante FTP (FileZilla es una buena opción) o desde el administrador de archivos de tu panel de control (cPanel, Plesk, etc.).
- Localiza la carpeta raíz de tu tienda PrestaShop. Normalmente es
public_htmlowww. - Busca el archivo
.htaccess. OJO: Es un archivo oculto. En FileZilla, activa la opción "Mostrar archivos ocultos" en el menú Servidor. Si no existe, puedes crearlo con un editor de texto y subirlo. - Antes de tocarlo, descarga una copia de seguridad de este archivo a tu ordenador. Esto es crucial por si algo sale mal.
- Abre el
.htaccesscon un editor de texto (no con doble clic, sino con "Abrir con" y eligiendo el editor). - Al final del archivo, añade las siguientes líneas exactamente como las ves aquí:
# ===== CABECERAS DE SEGURIDAD HTTP =====
<IfModule mod_headers.c>
Header set X-Frame-Options "SAMEORIGIN"
Header set X-Content-Type-Options "nosniff"
Header set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Header set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https:; style-src 'self' 'unsafe-inline' https:; img-src 'self' data: https:; font-src 'self' https:; connect-src 'self' https:; frame-src 'self' https:; object-src 'none'; base-uri 'self'; form-action 'self'"
</IfModule>
# ===== FIN CABECERAS DE SEGURIDAD =====
- Guarda los cambios y sube el archivo al servidor si lo estabas editando en local.
[WARNING]: La línea de Content-Security-Policy es muy estricta y puede romper funcionalidades de tu tienda si usas muchos módulos externos (como pasarelas de pago o reproductores de vídeo). Si después de añadirla tu tienda falla, prueba a usar esta versión más permisiva:
Header set Content-Security-Policy "default-src 'self' 'unsafe-inline' 'unsafe-eval' data: blob: https: http:"
Esta versión es menos segura pero más compatible. Mi recomendación es que empieces con la permisiva y luego vayas restringiendo poco a poco.
Método 3: Añadir código en el archivo de configuración de tu servidor (Para usuarios avanzados)
Si tu servidor es Nginx (en lugar de Apache), el método del .htaccess no funcionará. En este caso, tendrás que editar el archivo de configuración de tu sitio web en Nginx.
Pasos a seguir:
- Accede a tu servidor por SSH (si sabes lo que es) o a través del panel de control de tu hosting que permita editar la configuración de Nginx.
- Localiza el bloque
server { ... }de tu dominio. - Dentro de ese bloque, añade estas líneas:
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header Content-Security-Policy "default-src 'self' 'unsafe-inline' 'unsafe-eval' data: blob: https: http:" always;
- Guarda el archivo y reinicia Nginx para que los cambios surtan efecto.
[INFO]: Si tu hosting utiliza Syspanel (antiguamente conocido como HestiaCP), el puerto de acceso al panel es el 2106. Dentro de Syspanel, busca la sección de "Web" o "Dominios" para encontrar la opción de editar la configuración de Nginx para tu tienda PrestaShop.
Verificar que las cabeceras están activas
Una vez que hayas implementado uno de los métodos, es hora de comprobar que todo funciona correctamente. No te fíes de tu intuición; usa herramientas externas.
Herramientas para comprobar la seguridad HTTP
- SecurityHeaders.com: Es la web de referencia. Solo tienes que poner la URL de tu tienda y te dará una nota (de la A a la F) junto con un informe detallado de cada cabecera. Es muy visual y fácil de entender.
- Mozilla Observatory: Similar a la anterior, también te da una puntuación y te dice exactamente qué está bien y qué puedes mejorar.
- Inspección manual en el navegador: Abre tu tienda en Chrome, haz clic derecho y selecciona "Inspeccionar". Ve a la pestaña "Red" (Network), recarga la página, haz clic en el primer archivo (el documento HTML) y busca la sección "Headers de respuesta" (Response Headers). Ahí deberías ver todas las cabeceras que has configurado.
Preguntas frecuentes (FAQ) sobre cabeceras de seguridad en PrestaShop
¿Puedo romper mi tienda si añado estas cabeceras?
Sí, es posible, especialmente con la Content-Security-Policy. Si la configuras de forma demasiado restrictiva, puede bloquear scripts de módulos de terceros (como Google Analytics o el botón de PayPal). Por eso es tan importante usar primero la versión permisiva y luego ir ajustando. También es vital hacer una copia de seguridad del .htaccess antes de editarlo.
¿Necesito ser un programador para hacer esto?
No. Con el Método 1 (módulos) no tocas ni una línea de código. Con el Método 2 (.htaccess), solo necesitas saber copiar y pegar las líneas que te he dado. Es como seguir una receta de cocina.
¿Cada cuánto tiempo debo revisar mis cabeceras de seguridad?
Te recomiendo hacerlo al menos una vez al mes. Los estándares de seguridad cambian y siempre salen nuevas amenazas. Además, si instalas un módulo nuevo en PrestaShop, podría entrar en conflicto con tus cabeceras. Una revisión mensual con SecurityHeaders.com es una buena práctica.
¿Estas cabeceras sustituyen a un buen módulo de seguridad o a un firewall?
No, en absoluto. Las cabeceras HTTP son una capa más de tu "cebolla" de seguridad. Son defensas pasivas que refuerzan el navegador del cliente. Un módulo de seguridad activo (como un firewall o un anti-malware) protege el servidor y la aplicación en sí. Debes tener ambas cosas: las cabeceras activadas y un buen sistema de protección en tu PrestaShop.
¿Qué hago si mi tienda usa HTTP en lugar de HTTPS?
La cabecera Strict-Transport-Security (HSTS) no tendrá efecto si no tienes HTTPS activado. De hecho, si la activas sin tener HTTPS, podrías dejar tu tienda inaccesible. Lo primero es instalar un certificado SSL (hoy en día la mayoría de hostings lo ofrecen gratis con Let's Encrypt). Una vez tengas HTTPS funcionando, activa HSTS.
Proteger tu tienda PrestaShop de ataques no es un lujo, es una necesidad. Añadir estas cabeceras de seguridad HTTP es uno de los pasos más efectivos y con mejor relación coste-beneficio que puedes dar. No solo proteges a tus clientes, sino que también mejoras la confianza en tu marca y, de paso, ayudas a tu posicionamiento SEO, ya que Google valora positivamente los sitios seguros.
Empieza por el método que te resulte más cómodo, verifica con las herramientas online y ajusta lo que sea necesario. En menos de una hora, tendrás tu tienda con una armadura mucho más sólida. ¡Tu yo del futuro (y tus clientes) te lo agradecerán!
