如何绕过X-Frame选项:SAMEORIGIN HTTP标头?

时间:2010-05-06 17:26:29

标签: asp.net sharepoint http x-frame-options

我正在开发一个网页,需要在iframe中显示由另一家公司的SharePoint服务器提供的报告。他们很好。

我们尝试在iframe中呈现的页面为我们提供了X-Frame-Options:SAMEORIGIN,它导致浏览器(至少IE8)拒绝在帧中呈现内容。

首先,这是他们可以控制的东西,还是SharePoint默认执行的操作?如果我要求他们关闭它,他们甚至可以这样做吗?

其次,我可以做些什么来告诉浏览器忽略这个http标头并只渲染帧吗?

5 个答案:

答案 0 :(得分:26)

如果第二家公司很高兴您在IFrame中访问他们的内容,那么他​​们需要取消限制 - 他们可以在IIS配置中相当容易地执行此操作。

没有什么办法可以绕过它,任何有效的东西都应该在安全修补程序中快速修补。如果源内容标题在帧中不允许,则无法告诉浏览器只渲染帧。这会使会话劫持变得更容易。

如果内容是GET,那么你不会发回数据,那么你可以获得页面服务器端并代理没有标题的内容,但任何回发都应该失效。

答案 1 :(得分:22)

更新2019年:您 可以使用我的X-Frame-Bypass网络组件绕过X-Frame-Options中的<iframe>。它通过使用多个CORS代理扩展了IFrame元素,并在最新的Firefox和Chrome中进行了测试。

您可以按如下方式使用它:

  1. (可选)包含Safari的Custom Elements with Built-in Extends polyfill

    <script src="https://unpkg.com/@ungap/custom-elements-builtin"></script>
    
  2. 包括X-Frame-Bypass JS模块:

    <script type="module" src="x-frame-bypass.js"></script>
    
  3. 插入X-Frame-Bypass自定义元素:

    <iframe is="x-frame-bypass" src="https://example.org/"></iframe>
    

答案 2 :(得分:8)

X-Frame-Options标头是在浏览器级别强制执行的安全功能。

如果您可以控制您的用户群(公司应用程序的IT部门),您可以尝试像greasemonkey脚本(如果可以的话)在所有人之间部署greasemonkey,以及b)以共享方式部署脚本)。

或者,您可以代理他们的结果。在您的服务器上创建一个端点,让该端点打开与目标端点的连接,并简单地向后汇集流量。

答案 3 :(得分:4)

关于第二个问题 - 您可以使用Fiddler过滤器手动将回复X-Frame-Options标头设置为ALLOW-FROM *之类的内容。但是,当然,这个技巧只适合你 - 其他用户仍然无法看到iframe内容(如果他们不这样做)。

答案 4 :(得分:4)

是的Fiddler是我的选择:

  1. 打开 Fiddler菜单&gt;规则&gt;自定义规则(这有效地编辑了CustomRules.js)。
  2. 找到函数OnBeforeResponse
  3. 添加以下行:

    oSession.oResponse.headers.Remove("X-Frame-Options");
    oSession.oResponse.headers.Add("Access-Control-Allow-Origin", "*");
    
  4. 请记住保存脚本!