如何限制谁可以iframe嵌入我的网络应用程序?

时间:2014-02-07 13:47:18

标签: javascript iframe embed

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

例如,应该拒绝所有人不在列表中:

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

作为一个后续问题,鉴于对上述内容的任何限制,找出服务器端哪个白名单网站正在进行嵌入的最安全方法是什么?

2 个答案:

答案 0 :(得分:5)

使用X-Frame-Options HTTP header

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

另请参阅具有此建议的MSDN documentation

  

请注意,Allow-From令牌不支持通配符或列表   多个起源。对于服务器希望允许更多的情况   如果不是一个页面来构建其内容,则以下设计模式是   建议:

     
      
  1. 外部IFRAME使用a提供自己的原始信息   内部IFRAME的src属性上的查询字符串参数。这个可以   显然是由攻击者指定的,但没关系。
  2.   
  3. 服务器   内部IFRAME验证提供的Origin信息是否满足   商业惯例所要求的标准。例如,服务器   为IFRAME提供社交网络的“赞”按钮,   可能会检查提供的Origin是否与Origin匹配   期望的那个Like按钮,以及指定的所有者   Origin拥有有效的联盟关系等。
  4.   
  5. 如果满意的话   提供的信息,内部IFRAME的服务器发送   X-FRAME-OPTIONS:allow-from supplyorigin header
  6.   
  7. 浏览器然后   强制执行X-FRAME-OPTIONS指令。
  8.   

答案 1 :(得分:0)

FROM MDN

X-Frame-Options响应标题

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

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