python - Flask-Session 扩展与默认 session

标签 python flask

我正在使用:

from flask import session

@app.route('/')
def main_page():
    if session.get('key'):
        print ("session exist" + session.get('key'))
    else:
        print ("could not find session")
        session['key'] = '34544646###########'
    return render_template('index.html')

我没有安装 Flask-Session 扩展,但这仍然可以正常工作。我试图了解为什么以及何时该扩展对我来说很重要。据我所知,默认 session 对我来说效果很好。

最佳答案

区别在于 session 数据的存储位置。

Flask 的 session 是客户端 session 。您写入 session 的任何数据都会写入 cookie 并发送到客户端进行存储。客户端将在每次请求时将 cookie 发送回服务器,这就是您在 session 中写入的数据在后续请求中保持可用的方式。存储在 cookie 中的数据经过加密签名,以防止任何篡改。您的配置中的 SECRET_KEY 设置用于生成签名,因此只要您的 key 保密,客户端 session 中的数据就是安全的。请注意,此上下文中的 secure 意味着 session 中的数据不能被潜在的攻击者修改。任何知道如何查看的人仍然可以看到这些数据,因此您永远不应该在客户端 session 中写入敏感信息。

Flask-Session 和 Flask-KVSession 是 Fl​​ask 的两个扩展,用于实现 服务器端 session 。从应用程序的角度来看,这些 session 的工作方式与 Flask native session 完全相同,但它们将数据存储在服务器中。数据永远不会发送到客户端,因此安全性有所提高。客户端仍然会收到一个签名的 cookie,但 cookie 中唯一的数据是一个 session ID,它引用了存储数据的服务器中的文件或数据库索引。

关于python - Flask-Session 扩展与默认 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32084646/

相关文章:

python - Matplotlib .fill_ Between() 偏移量-1

python - 使用 Highcharts 的 Django Chart

file-upload - flask 中的文件上传错误

python - 在应用程序上下文之外工作 - Flask

python - AWS EB Flask 无法识别静态文件

python - 如何调用 python/flask 服务器从服务器端功能重新加载客户端页面?

python - 使用 pyparsing 进行部分评估

Python cx_Oracle。用 executemany() 敲头

python - 使用 Scipy 对分辨率不均匀的 3D 图像进行仿射变换的行为

python - Flask-restful路由功能的使用正确吗?