Cómo añadir cabeceras de respuesta HTTP seguras en WordPress

Uno de los aspectos más importantes a tratar cuando contamos con un proyecto web, sin duda alguna, es la seguridad. Si eres asiduo a esta web sabrás que lo repetimos una y otra vez hasta la saciedad. Y es que la mayoría de problemas a la hora de mantener un WordPress suelen provenir de fallas en seguridad. Es un aspecto que se suele descuidar muy a la ligera, pensando en que los hackeos y ataques siempre le ocurren “a otros” sin pensar, que el próximo “otro” podamos ser nosotros mismos. Es por eso que siempre que podemos, dedicamos un artículo a aumentar la seguridad de nuestros proyectos. En esta ocasión, veremos cómo añadir cabeceras de respuesta HTTP seguras en WordPress.

Como sabéis, WordPress es la plataforma más utilizada a la hora de implementar webs. Cabe decir que el 27 por ciento de las webs que pueblan todo Internet, están desarrolladas con WordPress. Es por eso que el excelente equipo del CMS open source siempre está al tanto de las vulnerabilidades, errores y demás temas relacionados con la seguridad. WordPress es un caramelito para los hackers, pero los técnicos de la plataforma no se lo ponen nada fácil.

Aún así, nunca está de más aumentar la seguridad de nuestro proyecto mediante nuestros propios medios. Un ejemplo claro de esto es la inserción de cabeceras de respuesta HTTP seguras en WordPress. ¿No sabes a qué me refiero? Tranquilo, te lo explico a continuación.

¿Qué son las cabeceras de respuesta?

Cuando visitas un sitio web, el navegador realiza una solicitud al servidor web que la aloja. Inmediatamente después, el servidor web responde con otra solicitud que contiene unas cabeceras (las llamadas cabeceras de respuesta). Estas cabeceras contienen información sobre el control de la caché, el tipo de contenido que se va a mostrar en el navegador, cómo está codificado dicho contenido, a qué hora se ha realizado la conexión… Si aumentamos la seguridad de estos encabezados de respuesta agregaremos una capa más de seguridad en nuestra web que ayudará a mitigar posibles ataques y vulnerabilidades.

El problema de todo esto que, para acceder a dichos archivos y editarlos, tendremos que solicitarlo a nuestra empresa de alojamiento web puesto que son ficheros muy delicados de la configuración del Apache, NGINX y demás…

Añadir cabeceras de respuesta HTTP seguras en WordPress

Puedes probar a agregar nuevas cabeceras insertando código en el functions.php. Si no te funciona, es que cuentas con un alojamiento muy restrictivo, y tendrás que comunicárselo a tu proveedor.


add_action('send_headers', function(){ 
    // Fuerza el uso de HTTPS
    header("Strict-Transport-Security: max-age=31536000; includeSubDomains");
    // Previene el Clickjacking
    header("X-Frame-Options: SAMEORIGIN");
    // Previene ataques por inyeccion de codigo
    header("Content-Security-Policy: default-src 'self';"); // FF 23+ Chrome 25+ Safari 7+ Opera 19+
    header("X-Content-Security-Policy: default-src 'self';"); // IE 10+
    // Bloquea el acceso si se sospecha de un ataque XSS
    header("X-XSS-Protection: 1; mode=block");
    // Previene problemas con el MIME-Type
    header("X-Content-Type-Options: nosniff");
    // Seguimiento
    header("Referrer-Policy: no-referrer-when-downgrade");
}, 1);

A continuación te explicaré a grandes rasgos, lo que hace cada una de estas cabeceras:

  • Strict-Transport-Security fuerza el uso de HTTPS. Es muy importante ya que protege de espías pasivos y de ataques MITM.
  • X-Frame-Options previene ataques clickjacking e impide que tu contenido no esté embebido en webs de terceros mediante los tags ,