首页 文章

Flask:如何防止重播攻击

提问于
浏览
1

我正在尝试在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,但问题是我正在处理一些机密数据,我必须确保在用户从系统注销后清除会话 . Is there any way to set one session lifetime after creation manually? 或者有什么简单的方法可以使用flask-login来处理这种情况吗?

1 回答

  • 0

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

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

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

相关问题