将Django项目上传至Github,除SECRET_KEY外还有哪些需保密变量?
Django敏感信息保密与环境配置指南
一、除SECRET_KEY外,这些信息也必须保密
- 数据库连接凭证:不管是MySQL、PostgreSQL的用户名、密码,还是Redis缓存服务的访问密码,生产环境的这类信息绝对不能提交到Github。本地开发用SQLite的话风险较低,但生产库的配置必须严格保密
- 第三方服务密钥:比如发送邮件的SMTP密码、云存储(OSS/S3)的Access Key/Secret Key、支付平台的API密钥、OAuth2的客户端密钥等,全都是核心敏感信息
- 生产环境专属配置:比如生产环境的
DEBUG值(若误提交DEBUG=True到生产会引发安全风险),以及私有网络内的服务地址、端口等内部信息 - 硬编码的凭证:如果脚本或配置里写死了管理员初始密码、测试用的用户token,这类内容必须删掉或移至.env文件存储
二、在Django里用.env是完全靠谱的方案
这和你在Express里的思路完全一致,也是Python生态中管理敏感信息的主流方式,操作步骤如下:
- 安装依赖包:
pip install python-dotenv - 在项目根目录创建
.env文件,按键值对写入敏感变量:SECRET_KEY=your_actual_secret_key_here DB_PASSWORD=your_db_password SMTP_PASSWORD=your_smtp_pass - 在
settings.py开头加载这些变量,替换硬编码内容:from dotenv import load_dotenv import os # 加载.env文件中的变量 load_dotenv() SECRET_KEY = os.getenv('SECRET_KEY') DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': os.getenv('DB_NAME'), 'USER': os.getenv('DB_USER'), 'PASSWORD': os.getenv('DB_PASSWORD'), 'HOST': os.getenv('DB_HOST'), } } - 务必将
.env加入.gitignore,同时可以创建.env.example文件,只保留变量名(留空或填示例值),方便其他开发者快速了解所需配置项
三、虚拟环境ll_env完全不影响保密
虚拟环境本来就不该提交到Github,就像你不会上传Express的node_modules一样。只要把ll_env目录加到.gitignore里即可——它只是本地用来隔离依赖的环境,内容都是本地生成的,和敏感信息无关,不会影响代码提交的安全性
内容的提问来源于stack exchange,提问作者tester0001
相关产品推荐
相关产品推荐

