隐藏唯一的API密钥在webOS (Enyo/JavaScript)



如何为我的基于webOS - Enyo的应用隐藏我的私有API密钥?

因为这个问题,我的发展基本上停滞了。

由于webOS Enyo(以及Mojo)是用Javascript编码的,任何用户都可以插入他们的设备并轻松查看我的源代码。显然我不能把钥匙插进去。即使它们是加密的,我的应用程序也必须包含解密它们的机制才能使用它们。我想隐藏我的私有web服务API密钥(主要是OAuth Twitter, Facebook, Google等),也许还有我的AWS私钥。

到目前为止,我发现的答案都表明,你不能在Javascript中保护像私有API密钥这样的东西。但是所有这些讨论都是针对web应用程序的,这些应用程序可以轻松地替代使用Javascript。除了用Javascript编写简单的应用程序外,webOS应用程序并没有什么好的选择。

我看到的唯一可能的路径是创建一个代理,我所有的API调用将通过。这是唯一可行或理想的选择吗?如果是,node.js能帮我解决这个问题吗?

任何线索,资源,例子,提示等将非常感激。我觉得答案应该摆在我面前,因为现在有这么多应用程序连接到这些服务,但我没有任何线索。谢谢。

任何具有这样的客户端私钥的应用程序(除了完全在服务器范围内的应用程序)都不会被窥探。在Windows上编译的c++应用程序也是如此。如果应用程序要直接使用私钥,那么它们就在代码中或可供代码使用。窥探的眼睛可以找到他们。是的,Javascript可能会使代码更易于访问,但这并不是webOS或Javascript应用程序的新问题。如果Enyo是一款PC/Mac跨平台工具,你的Twitter密钥难道不会遇到同样的问题吗?

通常,我们所做的是在安装时将密钥放入某种存储机制中。在PC上,这可能是注册表或一些配置文件。webOS有安装机制吗?看起来他们有html5类型的存储-你能在安装时将它们存储在那里吗?它们不会是防黑客的(它们也不会在任何其他平台上),但它们也不会存在于你的Javascript代码中。

另一个解决方案是要求你的开发人员获得他们自己的公共服务(如Twitter)的密钥,而不是每个人都使用你自己的。这可以让你避免在出现一个坏客户时让整个平台冒风险。

如果我误解了你的情况,请随时澄清,帮助我更好地理解。

我的感觉是拥有一个代理是一个好主意。代理为您提供了添加用户身份验证和其他功能的额外好处,而无需更改客户端。

看一下Key Manager服务,您可以使用它来存储密钥,而不必将它们编码到JS文件中。

最新更新