Flask 密钥
这篇文章是关于 Flask 中的密钥的。
在 Flask 和 Python 中使用不同的方式生成密钥
要访问会话 ID,需要使用分配给 SECRET_KEY
变量的加密密钥,所以当时我们将 SECRET_KEY
变量的值设置为字符串是非常危险的。该密钥需要随机生成。
为什么这么重要?好吧,如果客户端试图操作会话 ID 中的数据,我们希望它被服务器拒绝。
如果客户端能够以某种方式猜出密钥,那么他们就可以生成服务器不会拒绝的会话数据,你可能会猜到;这就是为什么这不是好的做法。
那么会话 ID 是干什么用的呢?好吧,它存储在 cookie 中,用于链接用户以指定服务器端的数据,例如数据库中有关用户的信息。
那么问题就变成了:我们如何生成真正的随机密钥?
让我们转到 Flask docs;如果我们向下滚动到它说明如何生成好的密钥的部分,根据文档,你的操作系统可以根据可用于获取此类密钥的随机密码生成器生成相当随机的东西。
在遵循文档的同时,我们打开一个 Python shell 并导入 os
模块,然后使用 urandom()
函数并在该函数中传递 24,以便你可以生成一个带有属性大小的链接的随机字符串我们通过了。
import os
os.urandom(24)
当我们点击 Enter 或打印它时,我们得到这个键。
b'o\xe8\xc3VS\xf3\xf8\x0c\x80Y\xad\xb6\x86\xb3\x7f\xee\x98l\x80\xe47\xfb]}'
此密钥不适用于你的 Flask 应用程序,因此你必须从系统生成它。生成密钥后,获取该字符串,返回 Flask 应用程序并将其分配给 SECRET_KEY
变量。
有几种方法可以获得密钥,我们将研究另一种生成十六进制密钥的方法。要生成此密钥,我们需要导入 uuid
模块,并从 uuid4()
函数中使用 hex
属性。
import uuid
uuid.uuid4().hex
输出:
'd5fb8c4fa8bd46638dadc4e751e0d68d'
在 Flask 中,还有另一种方式是自己定义一个秘钥;要定义密钥,我们可以使用以下代码。
app.config['SECRET_KEY']='Define_The_Key'
在使用 Flask 应用程序中的 debug
工具栏时,有必要定义一个密钥,因为如果在 Flask 应用程序中定义我们的密钥,DebugToolbarExtension
将无法工作。我们可以使用任何方法来定义密钥。
示例的完整源代码。
from flask import Flask,render_template
from flask_debugtoolbar import DebugToolbarExtension
# import os
# os.urandom(24)
# import uuid
# uuid.uuid4().hex
app = Flask(__name__)
app.debug=True
# app.config['SECRET_KEY']='Define_The_Key'
HEX_SEC_KEY= 'd5fb8c4fa8bd46638dadc4e751e0d68d'
app.config['SECRET_KEY']=HEX_SEC_KEY
TBAR=DebugToolbarExtension(app)
@app.route('/', methods=['GET'])
def DEB_EX():
return render_template('index.html')
if __name__=='__main__':
app.run()
当我们运行服务器时,我们可以看到工具栏工作正常,并且在控制台中没有出现错误。
我们在模板中使用了此代码。
<html>
<head>
<body>
<h2>Hi User, the secret key is necessary to run the debug toolbar</h2>
</body>
</head>
</html>
相关文章
Django 中的 Slug
发布时间:2023/05/04 浏览次数:173 分类:Python
-
本篇文章旨在定义一个 slug 以及我们如何使用 slug 字段在 Python 中使用 Django 获得独特的帖子。
在 Django 中按降序过滤查询集中的项目
发布时间:2023/05/04 浏览次数:157 分类:Python
-
在这个讲解中,学习如何借助 Django 中的 order_by() 方法按降序过滤出查询集中的项目。
Django ALLOWED_HOSTS 介绍
发布时间:2023/05/04 浏览次数:181 分类:Python
-
本文展示了如何创建您的 Django 网站,为公开发布做好准备,如何设置 ALLOWED_HOSTS 以及如何在使用 Django 进行 Web 部署期间修复预期的主要问题。
Django 中的 Select_related 方法
发布时间:2023/05/04 浏览次数:129 分类:Python
-
本文介绍了什么是查询集,如何处理这些查询以及我们如何利用 select_related() 方法来过滤 Django 中相关模型的查询。
使用 Post 请求将数据发送到 Django 服务器
发布时间:2023/05/04 浏览次数:159 分类:Python
-
在这篇关于Django的讲解中,我们简要介绍了post和get请求以及如何在Django中用post实现CSRF token。
Django 返回 JSON
发布时间:2023/05/04 浏览次数:106 分类:Python
-
在与我们的讨论中,我们简要介绍了 JSON 格式,并讨论了如何借助 Django 中的 JsonResponse 类将数据返回为 JSON 格式。
在 Django 中创建对象
发布时间:2023/05/04 浏览次数:59 分类:Python
-
本文的目的是解释什么是模型以及如何使用 create() 方法创建对象,并了解如何在 Django 中使用 save() 方法。
在 Django 中为多项选择创建字段
发布时间:2023/05/04 浏览次数:75 分类:Python
-
在本文中,我们将着眼于为多项选择创建一个字段,并向您展示如何允许用户在 Django 中进行多项选择。