Tengo varias aplicaciones web ejecutándose en mi servidor (Debian 8 ejecutando Apache). Uno de mis clientes desea mejorar la seguridad de su aplicación, luego de que algunas empresas de auditoría de seguridad hayan realizado las auditorías de seguridad, me mostró las vulnerabilidades que quería solucionar, una de ellas es el encabezado de X-Frame-Options que falta.
Mientras que el encabezado está presente en la aplicación HTTPS, falta en el HTTP.
Debido a los diferentes requisitos de las aplicaciones web que se exponen desde la misma instancia de Apache, no puedo definir un encabezado único de Opciones de X-Frame directamente en el archivo httpd.conf
.
He configurado una redirección interna http -> https
, luego agregué www.
, por ejemplo. webappaddress.com -> www.webappaddress.com
.
El problema reside en solicitar explícitamente la versión HTTP pero no obtener el encabezado antes de la redirección. Lo que sucede es: get http version -> redirect on https -> redirect to www.* if missing
.
Mi configuración en el virtualhost
(tanto para 80
como 443
):
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}$1 [R,L]
Mi configuración en el .htaccess
:
<IfModule mod_headers.c>
Header set X-XSS-Protection "1; mode=block"
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Header always append X-Frame-Options SAMEORIGIN
Header set X-Content-Type-Options nosniff
<If "%{HTTP_HOST} != 'www.webappaddress.com'">
Header set Content-Security-Policy "default-src 'self'; style-src 'unsafe-inline' 'self' ;"
Header always set Referrer-Policy "origin-when-cross-origin"
</If>
Por lo tanto, mi teoría es que el clickjacking podría ser posible antes de que ocurra la redirección (dime si estoy equivocado), pero si miras a Facebook o Google parecen seguir el mismo enfoque: no hay encabezados de seguridad antes del http- & gt ; https redirect.