快速旁注: 这是不帖子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 - 类似吗?
提前谢谢
答案 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/