我应该如何在Python应用程序中存储API密钥?

问题描述 投票:7回答:3

就我而言,我正在使用Dropbox API。目前,我将密钥和机密存储在JSON文件中,以便我可以对其进行gitignore并将其保留在Github存储库之外,但是从安全角度来看,这显然不比将其包含在代码中更好。以前有很多关于保护/混淆Python的问题(通常出于商业原因),答案始终是“不要,Python并非为此目的。”

因此,我不是在寻找一种保护代码的方法,而只是寻找一种解决方案,该解决方案可以让我在不公开API详细信息的情况下分发我的应用程序。

python api dropbox-api api-key
3个回答
2
投票

纯文本。如果分发代码,则任何混淆尝试都是徒劳的。


2
投票

不知道您的情况是否可行。但是您可以通过托管的代理访问API。

来自Python APP的请求转到代理,并且代理向Dropbox API发出请求,并将响应返回给Python应用。这样,您的api密钥将位于您托管的代理上。可以通过您喜欢的任何方式来控制对代理的访问。 (例如,用户名和密码)


1
投票

有两种方法,取决于您的方案:

如果您要为最终用户开发Web应用程序,请以不泄露您的API密钥的方式托管它。因此,将其保留为gitignored在单独的文件中,然后仅将其上载到您的服务器应该没问题(只要不破坏您的服务器)。任何混淆都不会增加任何实际好处,只会给人一种虚假的安全感。

如果您要为开发人员开发框架/库,或者为最终用户开发客户端应用程序,请他们自己生成API密钥。


0
投票

来自this answer:建议使用OS密钥环。在我的lib odsclient中,我最终实现了一系列替代方案,从最安全的(密钥)到次要的替代方案(OS环境变量,忽略git的文本文件,可能由odsclient混淆的arg传递的apikey)。

您可能希望寻找灵感,特别是getpass()

© www.soinside.com 2019 - 2024. All rights reserved.