首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用caja消毒Javascript?

用caja消毒Javascript?
EN

Stack Overflow用户
提问于 2012-01-20 17:52:29
回答 1查看 810关注 0票数 5

我希望允许应用程序的用户用Javascript编写扩展其功能的插件,而不允许访问我提供的插件API对象以外的任何东西。例如,插件可能如下所示:

代码语言:javascript
复制
plugin.hookSomeUserAction(function() {
    plugin.doSomethingWickedAwesome();
    document.title = 'hacked!'; //shouldn't work
});

Caja看起来应该能够完成任务,但是文档可能是我见过的任何开源项目中最糟糕的(相当大的成就!)我需要有人帮我把系统准备好。

我已经让诱骗者在命令行上工作了,我还诱使一个这样的插件变成了某种有希望被净化的Javascript。被诱骗的Javascript看起来像是在期待提供一个"IMPORTS___“对象,这个对象应该包含插件可以访问的所有内容。到目前为止很有希望!

不幸的是,让被诱骗的Javascript文件实际加载和运行已经变成了一片混乱。不幸的是,源代码片段在医生里完全错了,因为loadCaja函数实际上并没有出现在google的当前主干中。我找到了一些代码,这些代码至少能做些什么

代码语言:javascript
复制
<div id="plugin"></div>
<script>
    caja.configure({
        cajaServer: "/js/caja"
    }, function(frameGroup) {
        frameGroup.makeES5Frame(document.getElementById('plugin'),
            { /* No network access */ },
            function(frame) {
                frame.url('/js/plugins/test.js')
                    .run({});
            }
        );
    });
</script>

不幸的是,这样做的目的是试图让诱骗者重新诱骗我已经说服的javascript。我绝对不想让服务器重新诱骗每个请求的每个插件;我只是在上传时诱骗它,并将其存储起来以备使用。

我也找不到任何关于如何或在哪里指定IMPORTS___中的内容的文档(考虑到这是整个安全模型,在文档中似乎是一个奇怪的疏忽)。这是传递给.run()的对象吗?

EN

回答 1

Stack Overflow用户

发布于 2012-02-07 08:04:05

有趣的是,我对Caja唯一的知识来自于只阅读了SES的源代码,而不知道上下文的使用。我发现,与外部存在或不存在的任何文档相比,源代码是非常好的文档。

http://code.google.com/p/es-lab/source/browse/trunk/src/ses/initSES.js

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8945712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档