2013-06-26 155 views
6

在PHP中,可接受的安全数据库登录凭证的方式是将它们存储在Web根目录之外,并将密码文件保存到include()。 MySQL数据库登录证书如何安全地存储在Python应用程序中?如何在Python中安全地存储数据库密码?

+0

你有什么到目前为止发现?研究PHP应用程序似乎没用,如果你想了解我眼中的Python实践。幸运的是,有很多Python代码在浮动,所以你的研究涵盖了什么? – hakre

+1

我提到了PHP最佳实践,因为它是我熟悉的环境。至于Python,我发现只有混淆密码(base64之类)的建议,并确保Python文件不被其他人读取(0700权限)。我问这里是否有更好的方法。 – dotancohen

+1

我使用密钥环库(https://pypi.python.org/pypi/keyring)并将实际凭据存储在操作系统的凭证存储实用程序中。这很容易实现,而且对我来说似乎相当安全。 – northben

回答

4

好吧,这样做的一种方法是把密码放在一个单独的config/ini文件中,这个文件是而不是与该项目一起部署。然后,传递给应用程序,例如主入口此文件的路径:

python main.py --config=/path/to/config.ini

请注意,你需要分析这个--config说法(见argparse),然后读取并解析config.ini文件。

更新: 既然你提到的Web应用程序,也有配置信息传递的另一种方式 - 通过environ。例如,如果你使用mod_wsgi,你可以在WSGI指令推杆这样的:

SetEnv my_namespace.some_param some_value

然后,这个值将访问应用程序通过os.environ

import os 
os.environ['my_namespace.some_param']