我应该使用什么 Django 会话引擎来增强安全性?
TLDR;
db
会话引擎似乎是最安全的,但需要特别小心地创建备份。
Django 附带了这些会话引擎:
django.contrib.sessions.backends.db
django.contrib.sessions.backends.file
django.contrib.sessions.backends.cache
django.contrib.sessions.backends.cached_db
django.contrib.sessions.backends.signed_cookies
此外,您可以自己编写或使用第三方,例如
django-redis-sessions
。
经过一番研究,我发现只有
db
和file
引擎具有
clear_expired
方法已实施。当您调用 clearsessions
管理命令时,会调用此方法。
因此,当您使用其他会话引擎时,属于未注销而离开网站的用户的信息,仍然可以读取其会话中的内容。
您只能在单个服务器上使用
file
会话引擎,这不适用于扩展。因此,我最安全的选择是使用 db
会话引擎,并确保使用 PostgreSQL pg_dump django_session
参数将 --exclude-table-data
表从数据库备份中排除。