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

时间:2011-07-16 07:10:21

标签: javascript security api webos enyo

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

由于这个问题,我的发展基本上停止了。

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

到目前为止,我发现的答案已经声明,您无法在Javascript中获得类似私有API密钥的任何内容。但所有这些讨论都涉及Web应用程序,它们可以轻松替代使用Javascript。 webOS应用程序并没有真正替代Javascript编写简单应用程序的方法。

我认为可能的唯一途径是创建一个代理,我的所有API调用都会通过。这是唯一可行或理想的选择吗?如果是的话,node.js会在这里为我做这个伎俩吗?

任何线索,资源,示例,提示等都将不胜感激。我觉得答案应该是我的主角,因为现在有很多应用程序连接到这些服务,但我没有任何线索。感谢。

3 个答案:

答案 0 :(得分:2)

任何具有此类客户端私钥的应用程序(除了完全在服务器范围内的私钥之外)都不会被窥探。对于Windows的已编译C ++应用程序也是如此。如果应用程序将直接使用私钥,那么它们就在代码中或可用于代码。睁着眼睛可以找到它们。是的,Javascript可能会使代码更容易访问,但这不是webOS或Javascript应用程序的新问题。如果Enyo是PC / Mac跨平台工具,那么你的Twitter密钥不会出现同样的问题吗?

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

另一个解决方案是要求您的开发人员将自己的密钥提供给Twitter等公共服务,而不是每个人都使用自己的密钥。当有一个坏客户时,这可以让你免受整个平台的冒险。

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

查看Key Manager service,您可以使用它来存储密钥,而无需将它们编码到JS文件中。