python - Django 设置 ‘SECRET_KEY’ 的目的是什么?

我进行了一些谷歌搜索并查看了文档 (https://docs.djangoproject.com/en/dev/ref/settings/#secret-key),但我一直在寻找对此进行更深入的解释,以及为什么需要它。

例如,如果 key 被泄露/其他人知道它是什么,会发生什么?

最佳答案

它用于制作哈希。看:

>grep -Inr SECRET_KEY *
conf/global_settings.py:255:SECRET_KEY = ''
conf/project_template/settings.py:61:SECRET_KEY = ''
contrib/auth/tokens.py:54:        hash = sha_constructor(settings.SECRET_KEY + unicode(user.id) +
contrib/comments/forms.py:86:        info = (content_type, object_pk, timestamp, settings.SECRET_KEY)
contrib/formtools/utils.py:15:    order, pickles the result with the SECRET_KEY setting, then takes an md5
contrib/formtools/utils.py:32:    data.append(settings.SECRET_KEY)
contrib/messages/storage/cookie.py:112:        SECRET_KEY, modified to make it unique for the present purpose.
contrib/messages/storage/cookie.py:114:        key = 'django.contrib.messages' + settings.SECRET_KEY
contrib/sessions/backends/base.py:89:        pickled_md5 = md5_constructor(pickled + settings.SECRET_KEY).hexdigest()
contrib/sessions/backends/base.py:95:        if md5_constructor(pickled + settings.SECRET_KEY).hexdigest() != tamper_check:
contrib/sessions/backends/base.py:134:        # Use settings.SECRET_KEY as added salt.
contrib/sessions/backends/base.py:143:                       settings.SECRET_KEY)).hexdigest()
contrib/sessions/models.py:16:        pickled_md5 = md5_constructor(pickled + settings.SECRET_KEY).hexdigest()
contrib/sessions/models.py:59:        if md5_constructor(pickled + settings.SECRET_KEY).hexdigest() != tamper_check:
core/management/commands/startproject.py:32:        # Create a random SECRET_KEY hash, and put it in the main settings.
core/management/commands/startproject.py:37:        settings_contents = re.sub(r"(?<=SECRET_KEY = ')'", secret_key + "'", settings_contents)
middleware/csrf.py:38:                % (randrange(0, _MAX_CSRF_KEY), settings.SECRET_KEY)).hexdigest()
middleware/csrf.py:41:    return md5_constructor(settings.SECRET_KEY + session_id).hexdigest()

关于python - Django 设置 ‘SECRET_KEY’ 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7382149/

相关文章:

linux - 如何检查 X 服务器是否正在运行?

python - 如何将文件读入 Python 中的列表?

python - 如何在 Windows 上找到 Python 的安装位置?

python - 如何在 Python 中将 dos 路径拆分为其组件

linux - fuse 错误 : Transport endpoint is not connec

python - 目前在 Python 中进行 RPC 的选择是什么?

linux - sed 将带空格的行插入特定行

debugging - Linux内核实时调试是如何完成的,使用了哪些工具?

linux - 是否在/usr/local/lib 中搜索共享库?

python - 从 jinja2 调用 python 函数