我在 settings.py 中有敏感数据(数据库密码),有人建议我将我的 Django 项目上传到 github 存储库,然后再将其推送到 Heroku 上的“Heroku 上的 Django 入门”。如果我将 settings.py 放在 .gitignore 中,那么它可能不会与我的项目一起部署。如何防止 settings.py 被暴露,但仍将其与我的项目一起部署?
问问题
2649 次
2 回答
3
您可以使用环境变量(带有heroku config:add SECRET=my-secret
)来设置敏感数据并在您的设置中检索它们:
SECRET = os.environ.get('SECRET', 'my-default-secret-key')
如果您不想在没有设置一些数据的情况下启动您的应用程序,请改用以下语法:
SECRET = os.environ['SECRET']
如果您没有设置SECRET
环境变量,它将引发异常。
于 2013-09-29T01:37:06.233 回答
2
您应该使用专为分解敏感数据而设计的工具。我使用 YamJam https://pypi.python.org/pypi/yamjam/。它具有 os.environ 方法的所有优点,但更简单——您仍然需要设置这些环境变量,您需要将它们放在某个脚本/rc 文件中。YamJam 消除了这些问题,并将这些配置设置存储在项目外部的配置存储中。这使您可以对开发、登台和生产进行不同的设置。
from YamJam import yamjam
secret = yamjam()['myproject']['secret']
是基本用法。和 os.environ 方法一样,它不是特定于框架的,您可以将它与 Django 或任何其他应用程序/框架一起使用。我已经尝试了所有这些,多个 settings.py 文件,if/then 的脆弱逻辑和环境争论。最后,我改用了 yamjam 并没有后悔。
于 2014-05-03T16:20:40.657 回答