javascript - 在公共(public)存储库中隐藏 key

标签 javascript security api encryption

我正在开发一个开源 javascript 应用程序,我正在尝试与第三方 API(特别是 github)进行交互。我试图只保留我的整个应用程序客户端,所以我真的没有服务器可以回退或存储隐藏文件。作为 OAuth 流程的一部分,我需要提供为我的 api key 提供的 key 。我不应该发布或共享此 key 。

我想出了以下解决方案:

  1. 使用三重 DES 和密码加密 key 。
  2. 将加密版本放在我的存储库中的某个地方。
  3. 当我需要通过 Oauth 进行身份验证时,提示输入密码并恢复 key 。
  4. 一旦知道,将 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/

相关文章:

api - 使用 API 网关保护云功能

api - REST API 的多个版本如何共享相同的数据模型?

javascript - 我是否应该允许包含脚本标签(来自 WordPress 数据库)的内容动态插入到我的应用程序中的 html 中?

linux - 如何在传出流量上设置 Evil Bit

java - 如何使用Java代码防止保存jar内的公钥

Facebook Graph API 不返回事件图片

javascript - 外部 JavaScript 文件中的 AJAX 调用未到达 Controller 中的 ActionResult

JavaScript 在渲染前更改 div

javascript - 使用 Firebase Cloud Functions 在数据库中查找重复的用户名

javascript - 如何选择文本中的 <div> block ?