在下面的代码中,我想隐藏浏览器控制台正在查看的密钥(扬声器)密钥的内容。
var App_Version = 1;
var App_id = 35;
var Speaker = "password";
答案 0 :(得分:8)
如果round(microtime()*1000)
在您的客户端代码中的某处硬编码,那么您就不走运了。请参阅:Password encryption at client side,Howto hide Credentials in a pure Javascript HTML Web App和Is it worth hashing passwords on the client side,因为每个人都会说不会在客户端隐藏/混淆密码。
然而,如果你真的,真的只是想从你的客户端代码中完全删除密码,那么使用服务器端脚本“代理”你的AJAX请求并默默地将密码添加为POST参数(例如)传输到真实目的地。见Angular REST API security
如果你坚持在客户端使用某种加密,我发现angularjs-crypto是一个“用于在http请求/响应中对json进行解密/加密的AngularJS模块”。它基于crypto-js。但是,我仍强烈反对在客户端使用硬编码密码并对其进行加密。
答案 1 :(得分:1)
答案 2 :(得分:1)
在没有取消设置变量的情况下,Javascript无法隐藏变量的内容,如果您需要引用稍后的值,则对您没用。一些选项可供选择,具体取决于您的需求:
哈希值
您可以使用MD5或SHA获得值。这样,用户不知道该值是什么,但您仍然可以将其发送到服务器并以此方式存储
将值存储在服务器上
您可以将值存储在服务器上并使用某种键引用它。这样用户永远不会看到实际值,他们只是检查服务器以查看它们的值是否与服务器的值相匹配。
如果这是一个正在生成的密码而且我们从不希望用户看到它,那么最好的办法是在服务器上处理所有这些,这样用户就不可能拥有该值。客户方。
答案 3 :(得分:1)
Javascript代码被认为是可以使用的,因此您无法在代码中隐藏密码。 最佳做法是使用oAuth2,它使用临时令牌(推迟密码),结合CSRF之类的东西可以使客户端代码更安全。这里的one库可以帮助你在JS中做到这一点。它确实需要在访问资源时在服务器端验证该令牌(最好是每次调用)。 如果你需要在浏览器上存储密码以便登录到服务器,那么要做到这一点 - 不要。让用户登录,然后由服务器使用令牌问题或使用第三方登录并使用从第三方认证服务器获得的令牌。
答案 4 :(得分:1)
很好的问题,即使我遇到过这样的情况,我的API密钥和身份验证令牌在客户端可见。验证客户端Javascript文件是最佳选择。 您可以使用UglifyJS来混淆客户端代码。 此外,服务器端还必须具有创建和删除对象的权限。
答案 5 :(得分:0)
虽然从提供的小代码中并未完全清楚,但是从浏览器控制台中保护它是直截了当的 IF 我们 只有 谈论有人控制台。记录价值(因为你的问题似乎暗示)。
你可以将它放在一个闭包中,类似于一个揭示/模块化模式:
var app = (function () {
var Speaker = "something";
// only available on app declaration as the function is immediately called
return // some object/function protecting the speaker value
})();
console.log(Speaker); // gives an error
console.log(app.Speaker); // gives an error
当然 会阻止某人使用console.log之类的基本开发工具,它不会阻止有人添加断点。 javascript的本质我害怕
答案 6 :(得分:0)
嗯,你不能“隐藏”javascript。 但您可以使用OBFUSCATOR和其他工具加密它们
答案 7 :(得分:0)
使用jwt我们可以加密data.try link