Django 知识库:敏感信息存取
3905 views, 2020/05/10 updated Go to Comments
Django
中的 settings.py
是个宝库,基本上大部分的自定义配置都要在这里进行。所以问题就来了,这些配置里有相当多地方是涉及到账户、密码等敏感信息的。如果项目是开源的,怎么保证这些敏感信息不会泄露?
拿 SECRET_KEY
举例,它跟数据库中用户密码加盐等内容是挂钩的,听名字也知道是不能公开的内容。所以我们要在项目根目录创建一个环境文件 env.json
,把 SECRET_KEY
给挪进去:
{ "SECRET_KEY": "ul#d-f%=-.......z(3(a^r4is6n8s" }
然后在 settings.py
中调用就好了:
import json with open('env.json') as env: ENV = json.load(env) SECRET_KEY = ENV['SECRET_KEY']
如果你用的 GitHub
进行的代码远程管理,一定记得要把环境文件从跟踪表中剔除:
# .gitignore env.json ...
除了敏感信息,只要跟环境有关的变量都可以放到这个环境文件中。
比如下面这个:
# env.json { "env": "dev" } # ---------------------- # settings.py if ENV.get('env') == 'dev': DEBUG = True else: DEBUG = False
这样就可以根据环境自动切换调试状态了。
能交给程序完成的事,坚决不能自己动手,麻烦又容易犯错。