Django会话ID安全建议?
我现在正在用Python和Django开发一个网站,做登录的时候我开始使用request.session[""]来存储用户当前的会话。最近我发现,每次用户登录时,这样做会生成一个包含“sessionid”的cookie,里面的值像这样“c1cab412bc71e4xxxx1743344b3edbcc”。如果我把这个字符串复制到其他电脑的cookie里,不管是在什么网络上,我就可以在不登录的情况下访问这个会话。
所以我想问的是,有没有人能给我一些建议,告诉我怎么给我的系统增加一些安全性,或者我在设置会话变量的时候是否做错了什么?
有没有人能给我一些建议呢?
2 个回答
0
很遗憾,根据我所知道的,没有绝对最好的方法可以防止这种情况发生。不过,你可以给账户的拥有者发一封邮件,并设置一些类型的双重验证(2fa)。
0
有几个方法可以帮助提高会话cookie的安全性。
- 你可以设置会话在用户关闭浏览器后立即过期。
在你的 settings.py
文件中添加:
SESSION_EXPIRE_AT_BROWSER_CLOSE=True
- 你可以手动设置会话过期的秒数。
在任何视图的第一个参数(request
)中使用:
request.session.set_expiry(value) # number of seconds or timedelta object
针对你提到的具体问题,请考虑你所描述的其实是会话安全cookie的主要特性之一。它们是方便的工具,让用户可以在网站的安全部分使用,而不需要在每次请求页面时都重新登录。即使跨浏览器的功能也是一种特性,因为许多应用和浏览器提供同步功能,可以让你在手机、其他设备和不同的网页浏览器之间共享cookie和会话数据。
如果你仍然觉得这存在较大的安全风险,那么最安全的做法可能是从 MIDDLEWARE
和 django.contrib.sessions
中移除 SessionMiddleware
,这两项都在你的 settings.py
文件中。