嵌入页面的不同方法

时间:2014-10-07 15:19:50

标签: iframe cross-domain embed embedding

我们向客户提供第三方网站。通常,当我们处理RFP时,我们会被问到是否可以将我们的网站嵌入到我们客户的网站中。我们的许多潜在客户都有不寻常的限制或要求,例如“不要使用iframe”。

为此,我被要求确保我们即将对网站进行重新设计,以便至少以两种方式嵌入客户网站。

在另一个网站中嵌入功能齐全的网站(而不是跨站点图像或静态内容)的方法如下:

  1. iframe - 经常使用,经常受到诽谤,以及我们的一些人 以前的RFP特别排除了这种可能性。

  2. Object/Embed tags - 回过头来,可以嵌入一个 完整功能的HTML页面与您嵌入的相同 一个flash对象。

  3. Ajax - 据说可以装满 将站点转换为HTML对象(例如div标记),但由于跨域请求的危险,似乎还有其他安全问题需要跳过。

  4. 是否有其他方法可以将完整网站放在另一个网域中?上面三个中的任何一个都有任何警告或限制(例如,我们的网站使用AJAX调用登录并更新一些用户定义的设置,这些都将在上述每个嵌入策略中正确运行吗?)我可能是不知道?

    提前致谢。

1 个答案:

答案 0 :(得分:4)

X-Frame-Options响应标头

如果您将 网站嵌入其他人的网站,则必须注意X-Frame-Options response header。确保您的网站不会将SAMEORIGIN作为X-Frame-Options的值发送。如果这样做,将导致iframes and embedded objects出现问题。你可以做两件事:

  1. 您绝对发送标题:任何网站都可以在iframe或嵌入对象中显示您的网站。这可能会导致clickjacking等安全问题。 有关点击劫持的更多信息和防范,请参阅this article

  2. 您可以确保只有您授权的网站才能嵌入您的网站:这是通过为ALLOW-FROM url标头发送X-Frame-Options值来完成的。您可以嗅探HTTP-referer以确定哪个网站正在请求您的网页。这比选项1更安全(当然,除非用户的浏览器是恶意的)。 注意:并非所有浏览器都支持ALLOW_FROM。有关支持的浏览器,请参阅linked reference

  3. 同源政策

    只要您的网站和您的客户网站不访问其他DOM,

    Same Origin Policy就不会对您产生影响。

    CORS

    如果客户网站上的脚本向您网站中的资源发出AJAX请求(XmlHttpRequest),则应考虑{p> Cross-Origin Resource Sharing。但就你的问题而言,我认为情况并非如此。

    I gave an answer explaining CORS some time back,如果您想要对CORS有基本的了解,可以阅读它。

    第三方网站的插件

    您似乎正在尝试在客户端网站中嵌入一些功能。考虑提供像FacebookDisqus这样的网站插件。

    我不确定同源策略或CORS是否适用于此。我会发现并回复你。

    注意: X-Frame-Options,同源策略和CORS由浏览器实现。如果用户浏览器没有实现这些功能,或者浏览器被黑客攻击不遵守这些安全策略,那么您无能为力。