我们向客户提供第三方网站。通常,当我们处理RFP时,我们会被问到是否可以将我们的网站嵌入到我们客户的网站中。我们的许多潜在客户都有不寻常的限制或要求,例如“不要使用iframe”。
为此,我被要求确保我们即将对网站进行重新设计,以便至少以两种方式嵌入客户网站。
在另一个网站中嵌入功能齐全的网站(而不是跨站点图像或静态内容)的方法如下:
iframe - 经常使用,经常受到诽谤,以及我们的一些人 以前的RFP特别排除了这种可能性。
Object/Embed tags - 回过头来,可以嵌入一个 完整功能的HTML页面与您嵌入的相同 一个flash对象。
Ajax - 据说可以装满
将站点转换为HTML对象(例如div
标记),但由于跨域请求的危险,似乎还有其他安全问题需要跳过。
是否有其他方法可以将完整网站放在另一个网域中?上面三个中的任何一个都有任何警告或限制(例如,我们的网站使用AJAX调用登录并更新一些用户定义的设置,这些都将在上述每个嵌入策略中正确运行吗?)我可能是不知道?
提前致谢。
答案 0 :(得分:4)
X-Frame-Options
响应标头如果您将 网站嵌入其他人的网站,则必须注意X-Frame-Options
response header。确保您的网站不会将SAMEORIGIN
作为X-Frame-Options
的值发送。如果这样做,将导致iframes and embedded objects出现问题。你可以做两件事:
您绝对不发送标题:任何网站都可以在iframe或嵌入对象中显示您的网站。这可能会导致clickjacking等安全问题。 有关点击劫持的更多信息和防范,请参阅this article。
您可以确保只有您授权的网站才能嵌入您的网站:这是通过为ALLOW-FROM url
标头发送X-Frame-Options
值来完成的。您可以嗅探HTTP-referer以确定哪个网站正在请求您的网页。这比选项1更安全(当然,除非用户的浏览器是恶意的)。 注意:并非所有浏览器都支持ALLOW_FROM
。有关支持的浏览器,请参阅linked reference
Same Origin Policy就不会对您产生影响。
XmlHttpRequest
),则应考虑{p> Cross-Origin Resource Sharing。但就你的问题而言,我认为情况并非如此。
I gave an answer explaining CORS some time back,如果您想要对CORS有基本的了解,可以阅读它。
您似乎正在尝试在客户端网站中嵌入一些功能。考虑提供像Facebook和Disqus这样的网站插件。
我不确定同源策略或CORS是否适用于此。我会发现并回复你。
注意: X-Frame-Options
,同源策略和CORS由浏览器实现。如果用户浏览器没有实现这些功能,或者浏览器被黑客攻击不遵守这些安全策略,那么您无能为力。