javascript私有变量真的安全吗?

Are javascript private variables really safe?

本文关键字:安全 真的 变量 javascript      更新时间:2023-09-26

我正在考虑让其他人在我的网页中注入脚本。我有很多用户知道的秘密,所以我不介意用户打开调试器来检查变量。(真正的秘密和安全当然是在后端处理的)

我不想让这些第三方脚本访问这些秘密。

所以这是我的问题:外部代码可以访问我的对象的私有成员吗?或者换句话说:JavaScript中的私有变量有多安全?我很困惑,因为在我的理解中,原型似乎并不能真正帮助保守秘密。同时,我认为这种安全考虑可能是网络浏览器的责任,但我不是100%确定。

谢谢你!

编辑:我特别想到的情况是,一个恶意的人会查看源代码并故意编写代码,试图提取这些私有成员的值。我想知道这在多大程度上是可能的——如果有可能的话。

编辑:

我指的是TypeScript所说的"私有"变量,它的意思是:

class Greeter {
    private greeting: string;
    public message: string;
    constructor(message: string) {
        this.message = message;
    }
    greet() {
        return "Hello, " + this.message;
    }
}

看着JS,我可以理解为什么它不是很安全。我差点忘了TypeScript不是JS。但我一般讲的是任何封装javascript的方式

我不想让这些第三方脚本访问这些秘密。

那就不要让他们访问这个页面。将它们锁在跨域iframe沙箱中。

外部代码可以访问对象的私有成员吗?

是的。它可能不得不跳过一些可怕的环这样做(取决于你如何实现隐私),但我想不出任何方法来可靠地保护代码从其他代码在相同的JS环境。

如何换句话说:JavaScript中的私有变量有多安全?

不是很。

同时,我认为这种安全考虑可能是web浏览器的责任