【问题标题】:How to secure a server-side session in flask?如何保护烧瓶中的服务器端会话?
【发布时间】:2021-09-04 14:53:56
【问题描述】:

我面临的问题是 Werkzeug 1.0.0 已删除不推荐使用的代码,包括所有 Werkzeug.contrib 所以当我使用烧瓶会话时,我得到了

from werkzeug.contrib.cache import FileSystemCache
ModuleNotFoundError: No module named 'werkzeug.contrib'

所以建议的解决方案是降级我所做的werkzeug to 0.16.0。但现在的问题是

cannot import name 'ContextVar' from 'werkzeug.local'

为此提供的解决方案是将werkzeug升级到2.0或更高版本。

我应该怎么做才能修复烧瓶会话?如何安全地存储会话?

我在sessions.py 中看到了一些替代方法来导入from cachelib import FileSystemCache 而不是 from werkzeug.contrib.cache import FileSystemCache,但问题是它不会加密会话文件。

我该如何解决这个问题?烧瓶会话也存在一个问题,即关闭浏览器时会话未清除我在开始时特别给出了app.config["SESSION_PERMANENT"] = False

【问题讨论】:

    标签: python flask werkzeug flask-session


    【解决方案1】:

    我相信您的部分问题在这里得到了解答: https://stackoverflow.com/a/68060390/6361745

    要使烧瓶会话也在服务器端加密,您可以通过创建数据库并仅存储加密值来使用自己的会话管理。

    关于删除 cookie 数据的问题的最后一部分。我认为我们无法更改浏览器 cookie。我们只能控制服务器会话数据。但是,我们可以为它们设置到期时间。试试这个:

    app.config["SESSION_PERMANENT"] = True
    app.config['PERMANENT_SESSION_LIFETIME'] = 60 #in seconds
    

    【讨论】:

      【解决方案2】:

      更新 Werkzeug 版本以解决此问题。

      pip uninstall Werkzeug
      pip install Werkzeug
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-10
        • 1970-01-01
        • 2018-06-02
        • 2016-11-29
        • 2015-03-01
        • 2021-10-09
        相关资源
        最近更新 更多