如何隐藏Django settings.py中SMTP邮箱配置的账号密码敏感信息
Django 敏感配置信息隐藏方案
你看到的GitHub上配置位置显示********有两种可能:一是开发者提交代码时直接用占位符代替了真实值,二是GitHub的敏感信息扫描功能自动对识别到的凭证做了脱敏处理。想要避免明文提交敏感信息,常用两种实现方案:
方案1:通过系统环境变量读取配置
不需要额外安装依赖,适合线上部署场景:
- 在本地或部署服务器的系统环境变量中新增两个自定义变量,比如命名为
DJANGO_EMAIL_USER、DJANGO_EMAIL_PWD,分别填入真实的邮箱账号和密码 - 修改
settings.py中的邮箱配置,改为从环境变量取值:
# SMTP Configuration import os EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'smtp.gmail.com' EMAIL_PORT = 587 EMAIL_USE_TLS = True EMAIL_HOST_USER = os.getenv('DJANGO_EMAIL_USER', '') EMAIL_HOST_PASSWORD = os.getenv('DJANGO_EMAIL_PWD', '')
方案2:通过.env文件管理配置
适合本地开发场景,配置更集中:
- 首先安装依赖包:
pip install python-dotenv - 在Django项目根目录新建名为
.env的文件,写入敏感配置:
EMAIL_HOST_USER=你的真实邮箱账号 EMAIL_HOST_PASSWORD=你的真实邮箱授权码
- 编辑项目根目录的
.gitignore文件,添加一行.env,确保该文件不会被提交到Git仓库 - 修改
settings.py,先加载.env文件再读取配置:
# SMTP Configuration import os from dotenv import load_dotenv # 加载.env文件中的配置 load_dotenv() EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'smtp.gmail.com' EMAIL_PORT = 587 EMAIL_USE_TLS = True EMAIL_HOST_USER = os.getenv('EMAIL_HOST_USER', '') EMAIL_HOST_PASSWORD = os.getenv('EMAIL_HOST_PASSWORD', '')
内容的提问来源于stack exchange,提问作者L.Calvin
相关产品推荐
相关产品推荐

