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?