在Javascript中公开私有变量

时间:2010-11-03 13:56:34

标签: javascript security exploit

我对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变量。

3 个答案:

答案 0 :(得分:2)

假设这最终会在浏览器中运行,有人可以查看源代码并复制粘贴它(你说的是“任何方法”: - )。

此外,如果有人可以在您的网站上运行任意Javascript,那么保守关键秘密是您遇到的最少问题。

答案 1 :(得分:1)

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

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

编辑,使用调试器,你可以做任何事情!这是一个截图 alt text

答案 2 :(得分:0)

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