使用HTTP重定向尊重X-Frame-Options

时间:2014-02-27 18:46:41

标签: redirect http-headers x-frame-options clickjacking

我正在使用另一个域上的简单页面测试点击劫持缓解:

<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>为空/阻止)。

1 个答案:

答案 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>