首页 > 解决方案 > 如何保护将分发给客户端的应用程序中的 API 密钥

问题描述

我正在构建一个使用两条腿身份验证的应用程序。我有一个 API 密钥和 API 秘密,但现在我很困惑。

我目前将我的 api 密钥和秘密存储在一个.yml文件中。但我想分发 .app 代码,最终会有 .yml 文件。

但是 .app 文件将包含 .yml 文件,这很糟糕,因为每个人都可以看到 API 密钥和 Secret。

如何存储 API 密钥和秘密,以便我的应用程序可以在用户看到的情况下访问密钥和秘密?

标签: pythonapiapi-key

解决方案


答案取决于几个变量:

  1. 包括你的来源吗?
  2. 是否可以使用服务器为您调用 API?如果是这样,您是否也可以对服务器进行的调用应用限制?
  3. 将已编译的代码用于存储密钥的位置是一个选项吗?如果是这样,是否可以混淆它?

以下是我根据经验对不同场景的建议:

源不包括在内,使用服务器是一个选项,可以应用限制,但是使用编译的代码不是一个参数

然后使用服务器发出请求。假设您需要调用example.com/api/v1,并且想要使用一组特定的参数调用特定的函数,那么您只能允许使用该特定的参数集和该特定函数对该特定 API 的请求。这样一来,对于潜在的攻击者来说,它没有任何意义,因为它只调用一个函数而没有其他任何东西。

源不包括在内,使用服务器不是一个选项,编译的代码也不是一个选项

好吧,您无能为力,混淆是您的最佳选择。做这样的事情的最好方法是将它隐藏在你的代码深处,让它变得模糊,等等,等等,等等,

包含源代码,不能使用服务器,但您可以使用编译后的代码

使用真正混淆的程序集,如果可以的话,不要共享源代码。例如,你可以有红鲱鱼指令,就像以前一样,你应该把它隐藏在你的代码深处。

不包括源代码,不能使用服务器,但您可以使用编译后的代码

为此,它与上述相同,因为不会包含程序集的源代码

如果我没有在此处列出您的情况,请随时发表评论,我将编辑我的答案


推荐阅读