1

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

因为这个问题,我的开发基本上已经停止了。

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

到目前为止,我找到的答案表明您无法保护 Javascript 中的私有 API 密钥之类的东西。但是所有这些讨论都在处理那些可以轻松替代使用 Javascript 的 Web 应用程序。除了用 Javascript 编写简单的应用程序之外,webOS 应用程序并没有真正的替代方案。

我认为可能的唯一途径是创建一个代理,我的所有 API 调用都将通过该代理。这是唯一可行或理想的选择吗?如果是这样,node.js 会在这里为我解决问题吗?

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

4

3 回答 3

2

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

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

另一个解决方案是要求您的开发人员获取他们自己的公共服务(如 Twitter)的密钥,而不是每个人都使用您自己的。当有一个坏客户时,这可以防止您冒着整个平台的风险。

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

于 2011-07-16T08:55:28.697 回答
1

我的感觉是拥有代理是个好主意。代理为您提供了在不更改客户端的情况下添加用户身份验证和其他功能的额外好处。

于 2011-07-16T07:44:18.967 回答
1

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

于 2011-07-21T17:21:03.517 回答