1

我对 javascript 的受保护内存有疑问。如果我有这样的功能:

var obj = function(){
    var secret = "secret",
        super_secret = "my super secret string";   
    return {
        get_secret: function() {
            return secret;
        }()
    }
}();

是否可以通过任何方式从 super_secret 获取字符串?

我看到了一些利用 throw() 和 Error() 使变量失去功能的漏洞。然而,这并没有通过关闭来完成。非常欢迎所有输入和“预感”。我正在计划一个项目,我需要确保没有任何已知的方法可以提取或修改 super_secret 变量。

4

3 回答 3

2

假设这最终将在浏览器中运行,有人可以查看源代码并复制粘贴它(您确实说过“任何方式”:-)。

此外,如果有人可以让任意 Javascript 在您的网站上运行,那么保持密钥机密是您的问题中最少的。

于 2010-11-03T14:00:26.063 回答
1

几乎没有办法做到这一点。即使您从某个不在页面上的服务器加载数据,我也可以轻松打开 firebug 并开始调试以查找值。如果您必须具有安全性,则不要公开数据。即使加密数据也无济于事,因为密钥可能在 javascript 中的某个位置。

也许如果您分享您的问题,那么我们可以想到一个更好的解决方案。Javascript 在这里可能不是您的最佳选择。

编辑,使用调试器你可以做任何事情!这是一个截图 替代文字

于 2010-11-03T14:04:18.517 回答
0

你唯一能做的就是在服务器端加密和解密 super_secret。如果您向客户端发送未加密的数据或为其提供解密数据的方法,则您的数据对客户端可用,您不应依赖它被隐藏。

于 2010-11-03T14:34:46.850 回答