javascript - 从安全角度来看,让第三方将整个 HTML 注入 iframe 是否可以?
问题描述
我希望这不会被归类为一个自以为是的答案,但这里是:
我遇到了一些第三方库,它们只是要求你渲染一个 div:
<div id="targetThirdparty"></div>
将他们的脚本注入站点,然后他们的脚本就会发挥作用。
我今天遇到了一个场景,我被要求注入类似于上述方式的脚本,但在这种情况下,脚本本身会注入一个 Iframe,其中包含整个 html 文档及其脚本和 css 等。
我最初认为这不是一个理想的安全方案,因为 html 文档中的脚本可能是有害的或存在恶意用户可以利用的某种安全风险,而且我们根本无法控制它。
在网上搜索我发现,在使用 iframe 时,注入这样的 HTML 是一种常见情况。但是我正在寻找的是一种商品实践吗?我应该通知我的客户不要在网站上提供这个吗?支持和反对的动机?
解决方案
您的问题的简短回答是“这取决于”。为了澄清这一点,您正在嵌入来自第三方的代码和内容,因此增加了发生不良事件的风险。但是,这会增加风险,您需要了解它在您的环境中是否可以接受。
每当我考虑通过第三方脚本添加内容时,我都会考虑以下几点:
- 以不良方式使用脚本的风险是什么?
这主要取决于谁是提供脚本的供应商以及功能是什么。如果供应商是具有良好声誉的知名品牌,那么我就不那么担心了。但是,如果功能是提供来自用户的内容(想想社交媒体),那么风险可能会更高一些。
- 如果脚本出错,我的网站的行为是什么?
如果来自第三方的脚本失败,我总是会先加载页面并显示错误或隐藏组件。是的,我处理过一个页面上的第三方提要导致我负责的整个网站关闭的事件。
总之,只有您(或您的客户)可以决定这是否合适。这是一个回报与风险的案例,在许多情况下回报大于风险。因此,不要笼统地说“不,不要这样做”,但请在充分了解所涉及的风险的情况下进行讨论。
推荐阅读
- javascript - 从谷歌图表中的柱形图创建汇总表
- firebase - Flutter:如何从 firebase 对象创建带有标题的列表
- java - FileProvider 在空对象引用上崩溃 XmlResourceParser 和 ProviderInfo.loadXmlMetaData
- ruby-on-rails - 使用 Nginx 的 Rails 应用程序在 HTTP 但不是 HTTPS
- entity-framework-core - 如何在 Entity Framework Core 中实现自我引用?
- java - 登录/使用 Api 休息,Spring Security 基本身份验证不起作用
- spring-data - Spring Data MongoDB @Transactional 不起作用?
- r - ggplot2 barplot 用渐变颜色填充一个或几个条形图
- angular - 如何以角度形式更新动态生成的键和值
- php - 将 bash 中的 curl 转换为 php