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