【问题标题】:Flask: How To Prevent Replay AttacksFlask:如何防止重放攻击
【发布时间】:2015-06-15 15:08:12
【问题描述】:

我正在尝试在我的 Flask 应用程序中实现一个逻辑来防止回复攻击。 关于here 提出的问题,我的想法是在用户从系统注销时设置当前会话生存期。一般来说,建议这样设置会话生命周期:

@app.before_request
def before_request():
    session.permanent = True
    app.permanent_session_lifetime = timedelta(minutes=10)

但是,当用户从系统注销时,我想设置我当前的会话生命周期。类似于以下代码:

@app.after_request
def app_after_request(response):
    response.headers["X-Frame-Options"] = "SAMEORIGIN"
    if "__logged_out__" in session and session["__logged_out__"] is True:
        session.clear()
        response.set_cookie(app.session_cookie_name, '', expires=0)
    return response

我还检查了this question,但问题是我正在处理一些机密数据,我必须确保在用户从系统注销后清除会话。 有没有办法在手动创建会话后设置一个会话生命周期? 或者有什么简单的方法可以使用 flask-login 来处理这种情况?

【问题讨论】:

    标签: python session flask flask-login


    【解决方案1】:

    我找到了解决方案。我应该简单地使用Flask-KVSession 包将会话数据存储在数据库(或任何其他数据存储)而不是服务器内存中。正如包装网站介绍的那样:

    Flask-KVSession 是 MIT 许可的服务器端会话替代品 Flask 签名的基于客户端的会话管理。而不是存储 客户端上的数据,只有一个安全生成的 ID 存储在 客户端,而实际的会话数据驻留在服务器上。

    您还需要在数据库中创建一个键值配对表(默认情况下它具有命名会话,但您也可以更改名称和架构)并将其指向您的烧瓶应用程序对象。更多信息可以在here找到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-06
      • 2013-12-07
      • 2018-09-26
      • 1970-01-01
      • 1970-01-01
      • 2017-03-31
      相关资源
      最近更新 更多