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

这样就可以根据环境自动切换调试状态了。

能交给程序完成的事,坚决不能自己动手,麻烦又容易犯错。




本文作者: 杜赛
发布时间: 2020年05月10日 - 21:59
最后更新: 2020年05月10日 - 21:59
转载请保留原文链接及作者