我正在开发一个开源 javascript 应用程序,我正在尝试与第三方 API(特别是 github)进行交互。我试图只保留我的整个应用程序客户端,所以我真的没有服务器可以回退或存储隐藏文件。作为 OAuth 流程的一部分,我需要提供为我的 api key 提供的 key 。我不应该发布或共享此 key 。
我想出了以下解决方案:
- 使用三重 DES 和密码加密 key 。
- 将加密版本放在我的存储库中的某个地方。
- 当我需要通过 Oauth 进行身份验证时,提示输入密码并恢复 key 。
- 一旦知道,将 secret 存储在本地存储中以避免将来提示。
我本质上是在存储 key 的转换版本。我想这一切给我带来的好处是我必须从用户那里获得密码而不是完整的 key 。它应该比随机字节更容易记住。
这足够安全吗?它不是一个 super 关键的应用程序,但我想尽我最大的努力保护我被告知不要分享的东西。是否有比 3DES 更好的方法以可逆方式加密 key ?
最佳答案
此解决方案的问题是应用程序必须包含解密它的代码(可能还有 key )。最好的解决方案是根本不放入存储库。
大多数应用程序将此类数据存储在版本控制软件忽略的配置文件中。然后包括一个带有假 key 的示例配置文件以及有关如何重命名文件和获取自己的 api key 的说明。
一个很好的例子是 wordpress's config file在“身份验证唯一 key 和盐”中。部分。
关于javascript - 在公共(public)存储库中隐藏 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10602747/