Flask_login 有时会混合登录;我以其他人的身份登录

kra*_*r65 7 python cookies session flask flask-login

我正在使用很棒的Flask 框架创建一个网站,在其中我使用Flask-login进行用户登录。这通常工作正常,但有时我会看到混合登录的奇怪问题。我们有 3 个 Flask 开发服务器在一台机器上运行(在不同的端口上),并且我们在一间大约有 10 个人的办公室工作(有一个共享 IP)。问题是有时一个用户突然以另一用户身份登录。

我无法确定这种情况何时或在何种情况下发生。但我也不知道如何调试它。邪恶的根源可能是我们共享互联网连接,还是我们在一台机器上运行多个 Flask 开发服务器的问题?

我不知道我们办公室以外的人是否也会发生这种情况(我们仍处于测试阶段)。

有人可以给我一些关于如何调试这个的提示吗?

Mik*_*maa 1

您很可能正在使用一个 Web 服务器,该服务器正在缓存来自 Flask 的(部分)HTTP 回复。这些可能包括静态媒体、生成媒体、PDF、Office 文件。

配置错误的前端 Web 服务器可能会缓存此类包含媒体和会话 cookie(Cookies标头)的 HTTP 响应。在愉快地缓存此响应后,前端 Web 服务器将其提供给另一个用户。该用户的现有会话 cookie 将被缓存的 HTTP 响应中的会话 cookie 覆盖。然后,由于会话切换,该用户成为HTTP响应被缓存的用户。

解决方案

  • 修复您的会话中间件

  • 在服务器端显式设置无缓存标头

  • 配置您的前端 Web 服务器不缓存带有 cookie 的响应

更多信息请参见 Operationssecurity.org