我想知道是否可以在 Django 应用程序中生成随机密钥并将其分配给
SECRET_KEY
变量,而不是从环境变量中读取它。例如
# settings.py
from django.core.management.utils import get_random_secret_key
SECRET_KEY = get_random_secret_key()
这是推荐的还是不好的做法?
这会在每次加载设置时调用
get_random_secret_key()
,因此每次都会设置不同的 SECRET_KEY
,这不好。 来自文档:
密钥用于:
- 所有 sessions 如果您使用除 django.contrib.sessions.backends.cache 以外的任何其他会话后端,或者使用默认值 get_session_auth_hash()。
- 所有 消息(如果您使用 CookieStorage 或 FallbackStorage。
)- 所有 PasswordResetView 令牌。
- 任何加密签名的使用,除非提供了不同的密钥。
如果您轮换密钥,以上所有内容都将失效。 秘密密钥不用于用户的密码,并且密钥轮换将 不影响他们。
密钥提供加密签名,如果您轮换密钥,则以下所有内容都将失效(用户密码除外),因此在每个请求中生成它们是一个不好的做法。
- 所有会话(如果您使用除 django.contrib.sessions.backends.cache,或者使用默认值 get_session_auth_hash()。
- 如果您使用 CookieStorage,则所有消息 或备用存储。
- 所有PasswordResetView令牌。任何使用 加密签名,除非提供不同的密钥。