【发布时间】:2013-10-15 10:19:15
【问题描述】:
我正在构建一个 CMS 系统,我想限制第三方 javascript 包括用户可以嵌入到他们的网站中。
我将使用跟踪作为示例场景,因为它最能描述我想要实现的目标。
- 我创建了一个授权脚本白名单(即 Google Analytics、Optimizely)
- 用户输入新脚本,但它不在白名单(即 Tableau)中,核心功能将被阻止/限制/减少。
定义“阻塞”:脚本无法与页面上的任何元素交互(即观察表单元素并从提交的表单中捕获数据)或数据被混淆且根本无用的用户访问。
因此,考虑到上述示例,我希望 Tableau 的功能会有所减少。热图报告之类的东西将不再起作用(因为我们阻止了与 DOM 的交互,所以客户端事件不应该起作用)。我还假设查看 Caja 的架构,访问似乎来自 Cajoled 服务,而不是来自用户浏览器?
看看 Google Caja 似乎它可能是一个选择,但重点始终围绕整个 HTML/CSS/JS(一个小工具/应用程序),从这个意义上说,我正在寻找的东西稍微减少了一些。也许有其他解决方案
它是可以设置为通用的,还是需要针对每个白名单/黑名单项目进行特定的工作?
编辑 - 查看它,有各种类型的沙盒脚本可用,但它们看起来都相对不受支持或处于开发的每个生产阶段。
【问题讨论】:
标签: javascript sandbox google-caja