gpt4 book ai didi

javascript - 防止代码读取 cookie(可能使用 google CAJA)

转载 作者:行者123 更新时间:2023-11-28 05:37:49 24 4
gpt4 key购买 nike

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

<小时/>

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

每次用户执行某项操作时,都要证明执行该操作的用户执行该操作的帐户的用户(换句话说,验证用户),登录 token 将与必须完成的操作一起发送到服务器。 (快速说明:我存储的 token 不是用户的密码,它是随机生成的字符串,每次登录时都会发生变化)。这可行,但有一个问题。

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

我听说https://developers.google.com/caja/ - 看起来非常有用的东西。我阅读了 CAJA 页面,但没有任何关于阻止 cookie 的内容。

理想情况下,我希望用户仍然能够存储和读取自己的 cookie,但不能存储和读取登录 token 。 尽管这可能是不可能的

因此,完全阻止用户创建的脚本读取或写入 cookie 是可行的。

但是有一个问题:我对CAJA完全陌生。有人可以解释如何使用 CAJA 或类似的东西来阻止 cookie 吗?

提前谢谢您

最佳答案

这个问题已经很老了,但我刚刚开始使用 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/

关于javascript - 防止代码读取 cookie(可能使用 google CAJA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39209129/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com