【问题标题】:How to store API keys in a PyPI project?如何在 PyPI 项目中存储 API 密钥?
【发布时间】:2017-04-26 15:00:33
【问题描述】:

如何将 API 密钥存储在我将上传到 PyPI 的代码中?我不希望人们能够下载原始包文件并查看 API 密钥。

【问题讨论】:

  • 那么你为什么要把它们存储在那里呢?
  • 请检查我的回答。如果您需要更多解释,请发表评论,我很乐意提供帮助。

标签: python api python-3.x pypi


【解决方案1】:

在我看来,您的应用程序架构是错误的。

据我了解,可能有 2 种情况。

  1. 您在应用程序中使用的 API 密钥适用于第 3 方 API。

    在这种情况下,您应该要求用户生成他们自己的 API 密钥并使用这些 API 密钥初始化您的应用以使用您的模块。

这就是 twitter/Google/Github 以及大多数其他 python 模块的工作方式。

例如:https://github.com/inueni/birdy

from birdy.twitter import UserClient
client = UserClient(CONSUMER_KEY,
                    CONSUMER_SECRET,
                    ACCESS_TOKEN,
                    ACCESS_TOKEN_SECRET)
  1. 您正在提供自己的服务并使用 API 密钥访问它。

在这种情况下,您应该为用户提供一个端点来生成 API 密钥并再次使用它来初始化模块。

为什么要这样做?

拥有 API 密钥而不是公开可用的开放端点的全部意义在于安全性。您应该能够单独限制那些用请求轰炸您的 API 密钥。

如果您有 1 个 API 密钥用于所有模块下载,则该模块的每个用户都将使用相同的 api 密钥。你将无法扼杀任何人。

也没有安全性(下载模块的任何人都可以看到密钥)。

要更改 API 密钥,您必须更新模块并重新部署。并且您模块的所有用户都必须 pip upgrade 才能使用您的模块。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-13
    • 2021-12-10
    相关资源
    最近更新 更多