【问题标题】:How to restrict who can iframe embed my web app?如何限制谁可以 iframe 嵌入我的网络应用程序?
【发布时间】:2014-03-04 23:06:59
【问题描述】:

限制哪些网站可以通过网络应用程序嵌入 iframe 的最佳(最安全)方法是什么?

例如,所有不在名单上的人都应该被拒绝:

  • www.myFriend.com
  • www.anotherFriend.com
  • www.myThirdFriend.com

作为后续问题,考虑到上述任何限制,找出服务器端哪个白名单站点正在执行嵌入的最安全方法是什么?

【问题讨论】:

    标签: javascript iframe embed


    【解决方案1】:

    FROM MDN

    X-Frame-Options 响应标头

    使用 X-Frame-Options X-Frame-Options 有三个可能的值:

    • DENY: 该页面无法在框架中显示,无论网站是否尝试这样做。
    • SAMEORIGIN: 页面只能显示在与页面本身同源的框架中。
    • ALLOW-FROM uri: 页面只能显示在指定原点的框架中。

    【讨论】:

      【解决方案2】:

      使用X-Frame-Options HTTP header

      X-Frame-Options ALLOW-FROM http://example.com/
      

      另见MSDN documentation 有此建议:

      请注意,Allow-From 令牌不支持通配符或列表 多源的。对于服务器希望允许更多 比一页框架其内容,以下设计模式是 推荐:

      1. 外部 IFRAME 提供自己的来源信息,使用 内部 IFRAME 的 src 属性上的查询字符串参数。这个可以 显然是由攻击者指定的,但没关系。
      2. 服务器 内部 IFRAME 验证提供的 Origin 信息符合 商业惯例要求的任何标准。例如,服务器 为包含社交网络“赞”按钮的 IFRAME 提供服务, 可能会检查提供的 Origin 是否与 Origin 匹配 期望该 Like 按钮,以及指定的所有者 Origin 具有有效的附属关系等。
      3. 如果满意 提供的信息,内部 IFRAME 的服务器发送一个 X-FRAME-OPTIONS:允许来自提供的origin 标头
      4. 然后浏览器 强制执行 X-FRAME-OPTIONS 指令。

      【讨论】:

        猜你喜欢
        • 2013-04-12
        • 1970-01-01
        • 1970-01-01
        • 2010-11-17
        • 2018-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多