X-Frame-Options标头将防止您的网站被其他域 iFramed。在接受该ALLOW-FROM指令的浏览器上,您只能指定一个来源。您可以frame-ancestors对现代 UA使用 CSP 2.0指令。
话虽如此,可以根据请求引用者动态呈现响应标头并决定X-Frame-Options在响应中设置哪种类型的标头。
例如,您可以默认提供服务X-Frame-Options: deny,然后在控制器级别呈现deny或根本不发送任何X-Frame-Options标头以允许该请求成为 iFramed。
伪代码:
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
这种安全机制能被打败吗?攻击者控制的域是否有可能伪造refererUA 将通过一些 javascript 黑客发送的值?