安全扫描Django项目解决存在敏感信息常见问题

1. 使用环境变量 这是最常用的方法之一。

你可以将所有的敏感信息设置为环境变量,并在Django的配置文件中读取这些环境变量。

设置环境变量(Linux/macOS)

bash 复制代码
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配置文件中的使用:

bash 复制代码
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包来读取它们。

bash 复制代码
pip install python-decouple
pip install django-environ

创建 .env 文件:

bash 复制代码
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):

bash 复制代码
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,用法类似,但需要初始化环境对象。

成功:

相关推荐
Word码1 分钟前
接口自动化测试实战项目
软件测试·python·功能测试·集成测试·实战项目
孙同学20202 分钟前
如何将 JSON 数据转换为 Excel 工作表
python·json·excel
llm大模型算法工程师weng7 分钟前
Python拉取视频流的性能优化实战
开发语言·python·性能优化
人道领域10 分钟前
OpenClaw 源码泄露风波:一场由 “手滑” 引发的 AI 安全大地震
人工智能·安全·open claw
Lauren_Blueblue10 分钟前
第十六届蓝桥杯省赛Python研究生组-F串
python·算法·蓝桥杯·算法基础
kaico201810 分钟前
面向对象和高级特性
开发语言·python
曲幽11 分钟前
告别手写 API 胶水代码:FastAPI 与 Vue 的“契约自动机” OpenAPI 实战
python·typescript·vue·fastapi·web·swagger·openapi·codegen
刘~浪地球12 分钟前
Redis 从入门到精通(十五):安全配置与性能优化
redis·安全·性能优化
阿捞212 分钟前
python-langchain框架(3-20-智能问答ZeroShot_ReAct Agent 从零搭建)
python·react.js·langchain
数据知道14 分钟前
claw-code 源码分析:从 REPL 到服务端——CLI / HTTP(SSE) / LSP 多入口如何共享同一颗 runtime 心?
python·网络协议·http·ai·里氏替换原则·claude code