gpt4 book ai didi

python - 使用 Flask key 创建过程了解环境变量

转载 作者:行者123 更新时间:2023-12-01 04:16:55 27 4
gpt4 key购买 nike

我正在使用 Python 2.7 在 Mac 上学习 Flask 教程,该教程将引导您构建一个具有用户登录和密码功能的简单博客。

登录系统基于Flask-Login module

第一步是在应用程序目录的 config.py 文件中设置一个 key ,如下所示:

import os
class DevelopmentConfig(object):
SQLALCHEMY_DATABASE_URI = "postgresql://ubuntu:thinkful@localhost:5432/blogful"
DEBUG = True
SECRET_KEY = os.environ.get("BLOGFUL_SECRET_KEY", "")

我知道 SECRET_KEY 用于以加密方式保护应用程序,因为将应用程序的 key 存储在应用程序配置本身中并不是一个好主意,对吗?因此,我们使用 os.environ.get 从环境变量中获取 key 。

为了实现这一点,教程说有必要通过以下方式在命令行导出环境变量:

export BLOGFUL_SECRET_KEY="your_secret_key_here"

这设置了一个名为 BLOGFUL_SECRET_KEY 的环境变量 - 但使用此环境变量创建的 secret key 到底是如何实现的呢?

最佳答案

直接回答您的两个问题:

  1. key 存储在源代码外部,因此不会受到修订控制。
  2. key 不是通过导出环境变量创建的,也不是使用环境变量中的值创建的。

您可能真正需要的信息:

首先,请记住,我不是密码学专家!有了这个,就……

您需要做的是为您的应用程序生成一些适当大小和加密安全性的 secret ,然后将环境变量设置为该值。

我猜测 key 正在与您链接到的 Flask-Login 模块的 flask.ext.login.make_secure_token 方法相关使用。如果是这种情况,请查看源代码,该 key 与 HMAC 一起用于 SHA-512。理想情况下, key 应与算法使用的 block 大小相同,在本例中,如 Python 2.7 hmac implementation 的源所示。对于 512 位 HMAC 来说是 64。如果键小于 block 大小,则会用零填充;如果更大,它将被散列到 block 大小。

Flask quickstart documentation section for sessions提供了一个由 Python's os.urandom documentation 支持的示例用于生成适合加密的随机字节以用于 key 。我会更改他们的示例,因为我们希望 block 大小为 64(而不是 24)的 key 为:

import os
os.urandom(64)

获取结果并将环境变量设置为该值。直接使用 Flask 示例(不要在代码中使用这些值):

>>> import os
>>> os.urandom(24)
'\xfd{H\xe5<\x95\xf9\xe3\x96.5\xd1\x01O<!\xd5\xa2\xa0\x9fR"\xa1\xa8'

您将获取输出,并将环境变量设置为该值:

export BLOGFUL_SECRET_KEY='\xfd{H\xe5<\x95\xf9\xe3\x96.5\xd1\x01O<!\xd5\xa2\xa0\x9fR"\xa1\xa8'

关于python - 使用 Flask key 创建过程了解环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34213977/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com