ʇsә*_*ɹoɈ 27
我是通过打电话来做的session.clear().
编辑:
在另一个答案中阅读您的评论后,我发现您正试图阻止可能使用过去发布的cookie进行的重播攻击.我用这种方法尽可能地解决了这个问题:
save_session()调用版本时save_cookie(),让它session_expires在将来30分钟后传递一个参数.这导致超过30分钟的cookie被视为无效.save_session()经常更新一个会话变量的重写版本,以确保session_expires定期重写cookie及其时间.(我将此会话变量命名为'_refresh'并将当前时间存储在其中,然后仅在自上次存储时间过去超过几秒后重写它.此优化可避免在每个HTTP请求上重写cookie.)在自定义中复制Flask代码save_session()使得这种方法有点丑陋和脆弱,但是为了更改传递给的参数是必要的save_cookie().如果Flask使这更容易,或者至少实施了自己的防止重放攻击的保护措施,那将是很好的.
*警告:此方法本身不会阻止在会话cookie的有效生命周期内可能发生的重放攻击.基于cookie的会话的这个基本问题在RFC 6896和Liu,Kovacs,Huang,Gouda的安全Cookie协议中讨论.
Tah*_*gir 10
如果你有安全问题(每个人都应该有)有答案:
这不是真的可能
Flask使用基于cookie的会话.当您编辑或删除会话时,您向客户端发送请求以删除cookie,普通客户端(浏览器)将执行此操作.但如果会话被攻击者劫持,则攻击者的会话仍然有效.
after_request如果设置了特定标志,您可以添加回调以删除会话cookie:
@app.after_request
def remove_if_invalid(response):
if "__invalidate__" in session:
response.delete_cookie(app.session_cookie_name)
return response
Run Code Online (Sandbox Code Playgroud)
然后,只要您想使会话无效,您只需设置该会话密钥:
@app.route("/logout")
def logout():
session["__invalidate__"] = True
return redirect(url_for("index"))
Run Code Online (Sandbox Code Playgroud)
另见:http://werkzeug.pocoo.org/docs/wrappers/#werkzeug.wrappers.BaseResponse.delete_cookie
| 归档时间: |
|
| 查看次数: |
22216 次 |
| 最近记录: |