【问题标题】:Understanding 3rd party iframes security?了解第 3 方 iframe 安全性?
【发布时间】:2010-07-25 13:05:47
【问题描述】:

Facebook 和其他网站提供了一些 iframe 片段,我可以将它们放入我的网站。 示例:

<iframe src="http://www.facebook.com/widgets/like.php?href=http://example.com"
        scrolling="no" frameborder="0"
        style="border:none; width:450px; height:80px"></iframe>

我想知道的是,如果我把这段代码放在我这边,他们加载到我页面中的代码可以访问我页面的 DOM 吗?如果是这样,我会看到一些安全问题。

同样,facebook 允许我将 iframe 放入他们的网站,这就是 facebook 应用程序的工作方式。 然后我可以从包含我的 iframe 的任何页面上挖掘任何数据吗?

请注意,我在这里以 facebook 为例,但许多公司都在做同样的事情,所以这个问题在任何方面都不是 facebook 特有的,所以我没有这样标记它。

父页面也可以访问iframe的DOM吗?

【问题讨论】:

    标签: security iframe


    【解决方案1】:

    其实inheritance for iframes有具体的规则。这是同源策略的一部分,我强烈建议阅读整个谷歌浏览器安全手册。

    【讨论】:

      【解决方案2】:

      我知道父页面可以访问 iframe 的 DOM。最近我们有一个项目在工作,我们有一个需要符合 508 标准的网站。 iframe 不是,尽管屏幕阅读器处理 iframe 的效果要好得多,但此 iframe 中的内容不合规。我们将 jquery 库加载到我们的网站中,然后还将代码加载到我们的网站中以操作 iframe(仅在加载之后),然后混搭 iframe 内容以供访问。

      为了让您了解我们是如何做到的,这里提供了一个 jquery 示例。 (使用了很多查找和替换,但你明白了,你可以做其他事情。)

      $('iframe').load(function() {
          var f = $(this).contents();
          f.find('#sysverb_back').remove();
          f.find('a.column_head').each(function(){
              $(this).attr('title', $(this).text());
          });         
          f.find('img[title]:not([alt])').each(function(){
              $(this).attr('alt',$(this).attr('title')); 
          }); 
          f.find('input').filter(function() {
              return this.id.match(/sys_readonly\..+|ni\..+/);
          }).each(function() {
              $(this).before('<label for="'+this.id+'" style="display:none;">'+this.id+'</label>');
          });
      
      });
      

      });

      虽然我不知道你是否可以从 iframe 访问父 DOM。

      【讨论】:

      • 访问 parnet DOM 是我看到安全问题的地方,我同意应该允许访问子 iframe 内容。
      • @Winforms 不应该,因为这样攻击者可以将&lt;iframe&gt; 发送到 gmail 并在您访问他们的网站时阅读您的电子邮件。
      【解决方案3】:

      我假设是跨域 iFrame,因为如果你自己控制它,大概风险会更低。

      我一直在尝试自己解决这个问题

      • 如果您的网站作为 iframe 包含在内,那么点击劫持/XSS 是一个问题
      • 受损的 iFrame 可能会显示恶意内容(想象一下 iFrame 显示的是登录框而不是广告)
      • 包含的 iframe 可以进行某些 JS 调用,例如警报和提示,这可能会惹恼您的用户
      • 包含的 iframe 可以通过 location.href 重定向(哎呀,想象一下 3p 帧将客户从 bankofamerica.com 重定向到 bankofamerica.fake.com)
      • 3p 帧 (java/flash/activeX) 中的恶意软件可能会感染您的用户

      请注意,如果您的浏览器支持,html5“沙盒”属性可以解决很多此类问题,并且您可以通过 X-FRAME-OPTIONS 防止您的网站被包含为 iFrame。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-07
        相关资源
        最近更新 更多