防止代码读取cookie(可能使用谷歌CAJA)

时间:2016-08-29 14:49:53

标签: javascript html cookies google-caja

快速旁注: 这是帖子Is It Possible to Sandbox JavaScript Running In the Browser?的“可能重复”,它有<关于cookie的强烈>没有 - 我需要询问有关cookie的信息。不过,我确实已经阅读了答案。

您好!我有一个网页,其中(注册用户)可以创建自己的 HTML 页面,并轻松访问和编辑它们。

每次用户执行某项操作时,要证明执行操作的用户用户所执行操作的用户(,换句话说,到验证用户),登录令牌将沿着必须执行的操作发送到服务器。 (快速注意:我存储的令牌是用户的密码,它是随机生成的字符串,在每次登录时都会更改)。这有效,但存在问题。

由于用户可以创建自己的 HTML 页面,因此有人可以创建一个页面来读取用户的登录cookie并将其发送给某人。使用这种方法,有人可以进入别人的帐户。

我听说https://developers.google.com/caja/ - 这似乎非常有用。我阅读了 CAJA 页面,但没有任何关于阻止cookie的信息。

理想情况下,我希望用户仍然能够存储和读取自己的cookie,而不是登录令牌。 虽然这可能是不可能的

因此,完全阻止用户创建的脚本读取或写入cookie将起作用。

但是有一个问题: 我是 CAJA 的新手。有人可以解释如何使用 CAJA 或实际上阻止cookie - 类似吗?

提前谢谢

1 个答案:

答案 0 :(得分:0)

这个问题很老了,但我刚开始使用Caja。在实现之后,我写了一些尝试了一些东西的“访客代码”:创建弹出窗口(警报方法),读取cookie和访问全局变量。在Caja中运行的代码无法执行任何这些操作。如果我在Caja之外运行相同的代码,它可以。所以Caja会为你想做的事而努力。

以下是我的例子:

var htmlId = "performance";
            caja.initialize({
                cajaServer: 'https://caja.appspot.com/',
                debug: true
            });

            caja.load(document.getElementById(htmlId), undefined, function (frame) {
                @* Set-up config object for the activity *@
                var config = {};
                config.keydown = false;
                                   frame.code('https://localhost:44327/badcode', 'application/javascript')  // (6)
                    .run(function (guestF) {  // (7)
                        var app = frame.untame(guestF);  // (8)
                        console.log(app);
                        startCommandLineActivity(config, app);
                    });
            });

不受信任的代码是通过url'localhost / badcode'加载的,这只是一个.js文件。

他们的文档非常好,我建议你从那里开始:https://developers.google.com/caja/docs/runningjavascript/