安全扫描Django项目解决存在敏感信息常见问题
1. 使用环境变量 这是最常用的方法之一。
你可以将所有的敏感信息设置为环境变量,并在Django的配置文件中读取这些环境变量。
设置环境变量(Linux/macOS)
export SECRET_KEY='your_secret_key'
export DB_NAME='your_db_name'
export DB_USER='your_db_user'
export DB_PASSWORD='your_db_password'
在Windows上: 可以通过控制面板或PowerShell设置环境变量。
Django配置文件中的使用:
import os
SECRET_KEY = os.getenv('SECRET_KEY', 'fallback_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': 'localhost',
'PORT': '',
}
}
2. 使用 .env 文件与 python-decouple 或 django-environ
这是一种更结构化的方式,它允许你创建一个.env文件来保存所有敏感信息,然后通过Python包来读取它们。
pip install python-decouple
pip install django-environ
创建 .env 文件:
SECRET_KEY=your_secret_key
DEBUG=True
DB_NAME=your_db_name
DB_USER=your_db_user
DB_PASSWORD=your_db_password
DB_HOST=localhost
DB_PORT=5432
配置 Django (使用 python-decouple):
from decouple import config
SECRET_KEY = config('SECRET_KEY')
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': config('DB_NAME'),
'USER': config('DB_USER'),
'PASSWORD': config('DB_PASSWORD'),
'HOST': config('DB_HOST', default='localhost'),
'PORT': config('DB_PORT', default=''),
}
}
对于django-environ,用法类似,但需要初始化环境对象。
成功: