我正在使用Python 2.7跟随Mac上的Flask教程,引导您构建一个具有用户登录名和密码功能的简单博客。
登录系统基于Flask-Login module。
最初的步骤是在应用程序目录的config.py文件中设置一个密钥,如下所示:
export BLOGFUL_SECRET_KEY="your_secret_key_here"
我知道SECRET_KEY用于加密保护应用程序,因为将应用程序的密钥存储在应用程序配置本身并不是一个好主意,对吗?因此,我们使用os.environ.get从环境变量中获取密钥。
为了实现这一点,教程说必须通过命令行导出环境变量:
BLOGFUL_SECRET_KEY
这会设置一个名为{{ knp_pagination_render(requests)|raw|nl2br}}
的环境变量 - 但是使用此环境变量创建的密钥究竟是多少?
答案 0 :(得分:2)
直接回答您的两个问题:
您可能真正关注的信息:
首先,请记住,我不是密码学专家!随之而来......
您需要做的是为您的应用程序生成适当大小和加密安全性的秘密,然后将环境变量设置为该值。
我猜测秘密密钥与您链接到的Flask-Login模块的flask.ext.login.make_secure_token
方法有关。如果是这种情况,查看源代码,该密钥将与HMAC一起用于SHA-512。理想情况下,密钥应与算法使用的块大小相同,在这种情况下,对于512位HMAC,Python 2.7 hmac implementation的源指示为64。如果密钥小于块大小,则用零填充;如果更大,它将深入到块大小。
Flask quickstart documentation section for sessions提供了一个由Python's os.urandom
documentation备份的示例,用于生成用于密钥的密码学上合适的随机字节。我会改变他们的例子,因为我们想要一个64块的块大小而不是24块的键是:
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'
答案 1 :(得分:0)
没有意识到设置密钥的实际命令是:
export BLOGFUL_SECRET_KEY="your_secret_key_here"
使用Python解释器可以使用类似的东西生成密钥:
>>> import os
>>> os.urandom(24)
'\x072\xe7E|ns\x18g\x80& \xa3\xbf\xed\x91\xe6\x08+\x88\xd6\xafe['