X-Frame-Options
evitará que su sitio sea iFramed por otros dominios. En los navegadores que aceptan la directiva ALLOW-FROM
, está limitado a especificar un solo origen. Podría usar una directiva CSP 2.0 frame-ancestors
para los modernos UA's.
Dicho esto, es posible generar dinámicamente un encabezado de respuesta basado en el remitente de la solicitud y decidir qué tipo de encabezado X-Frame-Options
establecer en la respuesta.
Por ejemplo, podría servir por defecto X-Frame-Options: deny
y luego, en el nivel del Controlador, representar un deny
o simplemente no enviar ningún encabezado X-Frame-Options
para permitir que esa solicitud sea iFramed.
Pseudo código:
referer_host = request.referer
if allowed_origins.includes(referer_host)
response.headers['X-Frame-Options'] = '' # Remove header from response
else
response.headers['X-Frame-Options'] = 'deny'
end
¿Puede este mecanismo de seguridad ser derrotado? ¿Es posible que un dominio controlado por un atacante falsifique el valor referer
que la UA enviará a través de alguna piratería de JavaScript?