Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Flask:如何防止重播攻击_Python_Session_Flask_Flask Login - Fatal编程技术网

Python Flask:如何防止重播攻击

Python Flask:如何防止重播攻击,python,session,flask,flask-login,Python,Session,Flask,Flask Login,我正在尝试在我的Flask应用程序中实现一个逻辑,以防止应答攻击。 关于提出的问题,我的想法是在用户从系统注销时设置当前会话生存期。通常,建议按以下方式设置会话生存期: @app.before_request def before_request(): session.permanent = True app.permanent_session_lifetime = timedelta(minutes=10) 但是,我想在用户从系统注销时设置当前会话的生存时间。类似于以下代码:

我正在尝试在我的Flask应用程序中实现一个逻辑,以防止应答攻击。 关于提出的问题,我的想法是在用户从系统注销时设置当前会话生存期。通常,建议按以下方式设置会话生存期:

@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

我也检查了,但问题是我正在处理一些机密数据,我必须确保在用户从系统注销后清除会话有没有办法在手动创建后设置一个会话生存期?或者有没有简单的方法通过flask登录来处理这种情况?

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

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

您还需要在数据库中创建一个键值对表(默认情况下,它具有命名会话,但您也可以更改名称和模式),并将其指向flask app对象。可以找到更多信息