我正在使用另一个域上的简单页面测试点击劫持缓解:
<iframe src="https://my.domain/login"></iframe>
我的登录页面发送以下标题:
HTTP/1.1 302 Found
X-Frame-Options: SAMEORIGIN
Location: https://my.domain/landing
...
我很惊讶IE 10和Chrome 33都遵循重定向并在<iframe>
内显示我的目标网页。我的目标网页不会发送X-Frame-Options
,但我希望登录页面上的第一个X-Frame-Options
能够胜过重定向。当我的登录页面显示在框架中时,如何防止浏览器跟踪重定向?
如果登录页面没有发送HTTP重定向,我应该补充说事情按预期工作(<iframe>
为空/阻止)。
答案 0 :(得分:8)
根据RFC 7034中使用的术语,我得出结论,浏览器不会对HTTP重定向(状态代码301,302等)应用X-Frame-Options限制,而是针对浏览器处理的任何响应内容,例如:
使用&#34; X-Frame-Options&#34;允许从主机B到的网页 声明其内容(例如,按钮,链接,文本等) 不得在其他人的框架(
<frame>
或<iframe>
)中显示 页面(例如,来自主机A)。这是通过在中宣布的政策来完成的 HTTP标头,由记录的浏览器实现强制执行 这里。
或:
X-Frame-Options HTTP标头字段表示策略 指定浏览器是否应呈现传输的资源 在
<frame>
或<iframe>
内。服务器可以声明此策略 他们的HTTP响应标题,以防止点击劫持攻击, 这可以确保他们的内容不会嵌入其他页面或 帧。
作为登录页面的替代方案,您可以返回HTTP状态代码200和用于重定向的元标记或javascript,然后将应用X-Frame-Option,但我承认它很难看。 / p>