python - 如何在 PyPI 项目中存储 API key ?

标签 python api python-3.x pypi

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

最佳答案

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

据我了解,有两种情况是可能的。

  1. 您放入应用程序中的 API key 适用于第 3 方 API。

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

这就是 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)
  • 您提供自己的服务并使用 API key 访问该服务。
  • 在这种情况下,您应该为用户提供一个端点来生成 API key 并再次使用它来初始化模块。

    为什么要这样做?

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

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

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

    要更改 API key ,您必须更新模块并重新部署。并且您模块的所有用户都必须进行 pip 升级才能使用您的模块。

    关于python - 如何在 PyPI 项目中存储 API key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41089103/

    相关文章:

    python - 解决这个难题的最佳算法是什么?

    api - 从 Phoenix 应用程序架构中的第三方 API 服务获取数据的最佳位置

    python - while 循环 vs for 循环求 3 和 5 的倍数之和小于 1000

    python - 副窗无槽

    python - “模块”对象没有属性 'STARTUPINFO'

    python - 如何创建缺少年份的新行并用当前行填充它们

    python - 有没有类似于 tf.cond 但用于向量谓词的东西?

    python - linux 中的 Selenium webdriver 权限问题仍然存在

    javascript - CSRF - 通过 api 调用询问是否安全?

    api - 想知道为什么尝试使用 cURL 将 Letsencrypt .pem 证书上传到 Cloudflare API 会抛出 "Malformed JSON in request body"错误?