我对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变量。
答案 0 :(得分:2)
假设这最终会在浏览器中运行,有人可以查看源代码并复制粘贴它(你说的是“任何方法”: - )。
此外,如果有人可以在您的网站上运行任意Javascript,那么保守关键秘密是您遇到的最少问题。
答案 1 :(得分:1)
几乎没有办法做到这一点。即使你从一些不在页面上的服务器加载数据,我也可以轻松打开firebug并开始调试以找到值。如果您必须具有安全性,则不要公开数据。即使加密数据也无济于事,因为密钥可能会出现在javascript的某个地方。
也许如果你分享你的问题,那么我们可以想到一个更好的解决方案。 Javascript可能不是你最好的选择。
编辑,使用调试器,你可以做任何事情!这是一个截图
答案 2 :(得分:0)
你唯一能做的就是加密和解密super_secret,服务器端。如果您将未加密的数据发送给客户端或为其提供解密数据的方法,则客户可以使用您的数据,您不应该依赖它隐藏。