首页 > 解决方案 > 通过 .ENV 在 SETTINGS.PY 中自动创建 SECRET_KEY

问题描述

在我的研究中,我SECRET_KEY每次启动项目时都会生成我的。为此,我使用变量 in.enveval函数 in settings.py。这些文件如下所示:

.env

SECRET_KEY_VALUE_ENV = secrets.token_hex(100)

settings.py

import secrets

SECRET_KEY = eval(os.environ.get('SECRET_KEY_VALUE_ENV'))

生成SECRET_KEY这种方式有什么问题吗?

标签: pythondjangosecurity

解决方案


不要eval()对您无法完全控制的值使用危险函数。反正
你不需要。eval()

如果另一个程序或脚本设法SECRET_KEY_VALUE_ENV在您的环境中设置 的值,您将在您的机器上进行远程代码执行。

刮掉eval()并改用它:

SECRET_KEY = os.environ.get('SECRET_KEY_VALUE_ENV')

生成的更好方法SECRET_KEY是简单地:

from django.core.management.utils import get_random_secret_key  
SECRET_KEY_VALUE_ENV = get_random_secret_key()

推荐阅读