javascript:隐藏密钥的内容

在下面的代码中,我想隐藏浏览器控制台正在查看的密钥(扬声器)密钥的内容。

var App_Version = 1; var App_id = 35; var Speaker = "password"; 

如果var Speaker = "password"; 在您的客户端代码中的某处硬编码,您运气不好。 请参阅: 客户端的密码加密 ,以及如何在纯Javascript HTML Web应用程序中隐藏凭据以及是否值得在客户端散列密码,因为每个人都会说不在客户端隐藏/混淆密码。


但是 ,如果你真的, 真的只想从你的客户端代码中完全删除密码,那么使用服务器端脚本“代理”你的AJAX请求,然后默默地将密码添加为POST参数(例如)传输到真正的目标。 请参阅Angular REST API安全性


如果你坚持在客户端使用某种加密,我发现angularjs-crypto是一个“用于在http请求/响应中对json进行解密/加密的AngularJS模块”。 它基于crypto-js 。 但是,我仍强烈反对在客户端使用硬编码密码并对其进行加密。

那么你不能“隐藏”javascript。

您可以使用混淆器对其进行加密,但大多数人可以使用美容师对其进行解密。 不过要看看这个:

混淆

在没有取消设置变量的情况下,Javascript无法隐藏变量的内容,如果您需要引用稍后的值,则对您没用。 一些选项可供选择,具体取决于您需要的是:

散列价值

您可以使用MD5或SHA获得值。 这样,用户不知道该值是什么,但您仍然可以将其发送到服务器并以此方式存储

将值存储在服务器上

您可以将值存储在服务器上并使用某种键引用它。 这样,用户永远不会看到实际值,他们只是检查服务器以查看它们的值是否与服务器具有的值相匹配。

如果这是一个正在生成的密码而且我们从不希望用户看到它,那么最好的办法是在服务器上处理所有这些,这样用户就不可能在客户端获得价值。 。

Javascript代码被认为是可以使用的,因此您无法在代码中隐藏密码。 最佳做法是使用oAuth2,它使用临时令牌(推迟密码),结合CSRF之类的东西可以使客户端代码更安全。 这是一个可以帮助您在JS中执行此操作的库。 它确实需要在访问资源时在服务器端validation该令牌(最好是每次调用)。 如果你需要在浏览器上存储密码以便登录服务器,那就不要了。 让用户登录,然后由服务器使用令牌问题或使用第三方登录并使用从第三方认证服务器获得的令牌。

很好的问题,即使我遇到过这样的情况,我的API密钥和身份validation令牌在客户端可见。对客户端Javascript文件进行仿真是最佳选择。 您可以使用UglifyJS来混淆客户端代码。 此外,服务器端还必须具有创建和删除对象的权限。

虽然从提供的小代码中并不完全清楚,但是如果我们只是谈论某人控制台,那么保护它免受浏览器控制台的影响是直截了当的。记录价值(正如你的问题似乎提示)。

你可以将它放在一个闭包中,类似于一个暴露/模块化模式:

 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的本质

使用jwt我们可以加密data.try这个链接