如何在我的代码中存储API密钥,我将在PyPI上上传?我不希望人们能够下载原始包文件并查看API密钥。
答案 0 :(得分:2)
我认为你的应用程序架构是错误的。
根据我的理解,有2个案例是可能的。
您在应用程序中放置的API密钥适用于第三方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)
在这种情况下,您应该为用户提供生成API密钥的终点,并再次使用它来初始化模块。
你为什么要这样做?
拥有API密钥而不是公共可用的开放端点的重点是安全性。您应该能够单独限制API密钥,这些API密钥会向您发出请求。
如果您有所有模块下载的1个API密钥,那么该模块的每个用户将使用相同的API密钥。你将无法扼杀任何人。
也没有安全性(下载模块的任何人都能看到密钥)。
要更改API密钥,您必须更新模块并重新部署。并且模块的所有用户都必须进行升级才能使用您的模块。