使用 iframe 显示外部内容时都有哪些安全风险和可能的预防措施?
Posted
技术标签:
【中文标题】使用 iframe 显示外部内容时都有哪些安全风险和可能的预防措施?【英文标题】:What are the security risks and possible preventive measures when using an iframe to display external content?使用 iframe 显示外部内容时有哪些安全风险和可能的预防措施? 【发布时间】:2011-12-18 19:53:49 【问题描述】:我正在为 A 公司构建一个 php Web 应用程序,用户可以在其中登录和管理他们库存中的某些项目。出于维护等原因,我想自己托管此应用程序,以确保服务器符合预期的性能标准,并且因为公司 B 或 C 可能也需要相同的服务。
A 公司(B 和 C 也一样)想要的是让这个应用程序可以从他们域上的子页面访问。我已经了解了 URL 重写和链接的可能性,但我决定使用 iframe 在他们的网站上显示应用程序。
我以前使用过 iframe,但在处理私有数据时从未使用过,因此我不太熟悉使用 iframe 所带来的安全风险。我在谷歌搜索后发现的许多示例都是黑客将具有自己目标的 iframe 添加到现有代码中的风险,而不是有害地使用现有代码。我应该注意什么并尽量避免发生?
如果我完全不同意这个,我可以使用什么其他方法来代替 iframe?鉴于上述要求。
【问题讨论】:
【参考方案1】:首先,您最好的解决方案可能是使用指向托管应用程序的服务器的子域。因此,A 公司可以在companya.com
上拥有他们的常规网站,但在app.companya.com
上拥有应用程序。
关于框架,我认为在您的情况下无需担心任何安全“风险”。 iframe 将属于您,您可以控制它。 javascript 的同源策略防止不同域(和子域,除非设置了document.domain
)上的帧相互访问。因此 iframe 将无法访问父级,反之亦然。
但是,我假设该应用程序是独立的,并且不依赖于父站点的任何内容。在这种情况下,一切都会发生在框架中,并且框架不需要以任何方式进行通信。
当然,框架的缺点是,当您在 iframe 中加载新页面时,明显的 URL 和页面标题将保持不变,这会降低可用性(如果担心的话,对 SEO 也不利)。
【讨论】:
以上是关于使用 iframe 显示外部内容时都有哪些安全风险和可能的预防措施?的主要内容,如果未能解决你的问题,请参考以下文章
将 Access-Control-Request-Headers 设置为 * 都有哪些安全风险? [复制]