La cabecera como X-Frame-Options sirve para prevenir que la página pueda ser abierta en un frame, o iframe. De esta forma se pueden prevenir ataques de clickjacking sobre tu web.
Por ejemplo, si la web https://atlanticadigital.net contiene la cabecera X-FRAME-OPTIONS con el valor Allow-From https://www.facebook.com, entonces la web https://atlanticadigital.net solo podrá ser “enmarcada” desde el dominio www.facebook.com.
Otra opción sería denegar siempre el enmarcado (DENY), o decirle que solo pueda ser enmarcada desde el mismo origen (SAME-ORIGIN).
Estos son los valores que acepta:
-
DENY
La página no podrá ser mostrada en un frame/iframe.
-
SAMEORIGIN
Solo podrá ser mostrada en un frame/iframe desde su propio dominio.
-
ALLOW-FROM uri
Solo podrá ser mostrada en un frame/iframe desde las url’s indicadas.
Si utilizamos Wordpress como CMS la mejor forma de añadir esta cabecera sería añadiendo unas líneas de código al archivos functions.php del tema de WordPress que estemos usando.
Este archivo se encuentra en la ruta wp-content/themes/NOMBRE_TEMA, en donde NOMBRE_TEMA es el nombre del tema que tenemos activado.
En primer lugar, haremos una copia de seguridad del archivo functions.php. Después lo editamos y añadimos el siguiente código al final del mismo:
add_action( 'send_headers', 'add_header_xframeoptions' ); function add_header_xframeoptions() { header( 'X-Frame-Options: SAMEORIGIN' ); }
Existen otras maneras de poner añadir esta cabecera . Si tenemos Apache como servidor web pordemos usar el fichero .htaccess, agregando el código que se indica a continuación:
Header always append X-Frame-Options SAMEORIGIN
En caso de usar Nginx, habría que introducir el siguiente código en el fichero de configuración de Nginx:
add_header X-Frame-Options SAMEORIGIN;
Puede encontrar más información técnico en Mozilla Developer Network.
Si queremos añadir otras cabeceras de seguridad a partir de cambios en el archivo functions.php, podemos hacerlo usando una única función, en lugar de añadir cada cabecera en una función distinta, aunque el funcionamiento sea similar.
En el siguiente código de ejemplo, que habría que colocar al final del archivo functions.php, se añaden las cabeceras X-Content-Type-Options, X-Frame-Options y X-XSS-Protection:
add_action( 'send_headers', 'add_header_seguridad' ); function add_header_seguridad() { header( 'X-Content-Type-Options: nosniff' ); header( 'X-Frame-Options: SAMEORIGIN' ); header( 'X-XSS-Protection: 1;mode=block' ); }
En el caso de que querramos agregar las cabeceras en el archivo .htaccess las lineas a agregar quedarian asi:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS
Header always set Content-Security-Policy "upgrade-insecure-requests"
Header always set X-Content-Type-Options "nosniff"
Header always set X-XSS-Protection "1; mode=block"
Header always set Expect-CT "max-age=7776000, enforce"
Header always set Referrer-Policy: "no-referrer-when-downgrade"
Header set X-Frame-Options SAMEORIGIN