一尘不染

使Flask中的旧会话无效

flask

如何在Flask中创建一个新的干净会话并使当前会话无效?

我使用make_null_session()还是open_session()


阅读 317

收藏
2020-04-06

共1个答案

一尘不染

我使用这种方法尽可能解决了这个问题*:

  • 覆盖SecureCookieSessionInterface.save_session(),从覆盖版本复制代码,而不是调用它。
  • 当覆盖版本的save_session()call时save_cookie(),使其在session_expires30分钟后传递一个参数。这会导致超过30分钟的Cookie无效。
  • save_session()经常使更新的覆盖版本成为会话变量,以确保cookie及其session_expires时间得到定期重写。(我将这个会话变量命名为'_refresh'并在其中存储当前时间,然后仅在自上次存储的时间以来经过了几秒钟之后才重写它。此优化避免了在每个HTTP请求上重写cookie。)
    在自定义项中复制Flask代码save_session()会使此方法变得难看且脆弱,但是必须更改传递给的参数save_cookie()。如果Flask使这变得更容易,或者至少实现了针对重放攻击的防护措施,那就太好了。
2020-04-06