Configurar la cabecera X-Frame-Options en Apache es sumamente útil para controlar cómo se incrusta nuestro sitio web dentro de otras páginas a través de etiquetas: frame, iframe, embed o object; esto es importante para evitar ataques de clickjacking o secuestro de click.
De acuerdo con OWASP, el clickjacking, ocurre cuando un atacante usa múltiples capas transparentes u opacas para engañar a un usuario para que haga clic en un botón o en un enlace incrustado en otra página, cuando su intención real era hacer clic en la página del nivel superior. Por lo tanto, el atacante estaría “secuestrando” los clics destinados a nuestra página y enviándolos a otra página, probablemente propiedad de otra aplicación, dominio o ambos.
De forma similar, un atacante también podría secuestrar las pulsaciones de teclas. Con una combinación cuidadosamente diseñada de hojas de estilo CSS, iframes y cuadros de texto, el atacante puede hacer creer a un usuario que está escribiendo la contraseña de su correo electrónico o cuenta bancaria en un sitio benigno, pero en lugar de eso la está escribiendo en un iframe invisible controlado por el atacante.
Veamos ahora cómo configurar la cabecera X-Frame-Options en Apache, para evitar ataques de clickjacking:
Lo primero que se requiere es activar el módulo de Headers así
sudo a2enmod headers
A continuación reinicie Apache en su servidor:
sudo systemctl restart apache2
Alternativamente, reinicie Apache así:
sudo service httpd restart
Luego deberá editar el archivo
que se ubica normalmente al interior de /etc/httpd/conf/ o al interior de /etc/apache2 según su distribución de sistema operativo. También es posible que usted tenga un archivo específico de sitio web tal como example.com.conf al interior de sites-available y agregue la siguiente directiva dentro del bloque
para el dominio deseado o globalmente
Header always set X-Frame-Options "SAMEORIGIN"
La línea anterior establece el encabezado X-Frame-Options en SAMEORIGIN, lo que permite que la página pueda incrustarse sólo en páginas del mismo dominio. Alternativamente, puede usar DENY para evitar el incrustamiento por completo o especificar dominios específicos usando ALLOW-FROM uri.
Finalice reiniciando Apache
sudo systemctl restart apache2
Esta configuración agrega el encabezado X-Frame-Options a todas las respuestas enviadas por su servidor Apache, lo que ayudará a prevenir ataques de clickjacking al controlar el comportamiento de incrustamiento de su web.