用Flask密钥生成过程理解环境变量

2024-09-30 18:15:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我下面是一个使用python2.7的Mac上的Flask教程,它将引导您构建一个具有用户登录和密码功能的简单博客。在

登录系统基于Flask-Login module。在

第一步是在配置.py应用程序目录中的文件如下所示:

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

我知道秘密密钥被用于加密应用程序,因为将应用程序的密钥存储在应用程序配置本身中不是一个好主意,对吗?因此,我们使用操作系统环境获取从环境变量中获取密钥。在

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

^{pr2}$

这将设置一个名为BLOGFUL_SECRET_KEY的环境变量,但是如何使用这个环境变量创建密钥呢?在


Tags: key用户功能应用程序密码flasksecretos
2条回答

直接回答您的两个问题:

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

你可能真正想要的信息:

首先,请记住我不是密码专家!别碍事了

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

我猜测这个秘密密钥是与链接到的Flask登录模块的flask.ext.login.make_secure_token方法相关联的。如果是这样的话,看看源代码,这个键正与HMAC一起用于SHA-512。理想情况下,密钥应该与算法使用的块大小相同,在这种情况下,Python 2.7 hmac implementation的源代码指示为512位HMAC的64。如果键小于块大小,它将用零填充;如果更大,它将哈希到块大小。在

Flask quickstart documentation section for sessions提供了一个由Python's ^{} documentation备份的示例,该示例用于生成可用于密钥的机密性合适的随机字节。我会改变他们的示例,因为我们希望块大小为64而不是24的密钥为:

import os
os.urandom(64)

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

^{2}$

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

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

没有意识到设置密钥的实际命令是:

export BLOGFUL_SECRET_KEY="your_secret_key_here"

使用Python解释器可以使用类似的方法生成密钥:

^{2}$

相关问题 更多 >