在cookies中安全地存储Django会话数据的方式
项目描述
此包包含一个用于替换django.contrib.sessions.middleware.SessionMiddleware的中间件,将所有会话数据存储在浏览器cookie中,而不是数据库中。代码基于Christopher Lenz的一个代码片段。
为了防止用户篡改,会话字典经过以下编码步骤
将会话字典转换为JSON
使用JSON和网站的SECRET_KEY生成SHA1哈希
将JSON和SHA1哈希连接,gzip压缩并base64编码
解码后
将cookie进行base64解码和ungzip解压缩
将数据分为SHA1哈希和JSON数据
从接收到的JSON数据和网站的SECRET_KEY重新生成SHA1哈希
如果哈希不匹配,则引发SuspiciousOperation异常。如果哈希匹配,则将JSON数据转换为python对象并返回。
安装
将cookiesession应用程序放入您的INSTALLED_APPS。接下来,将cookiesession.middleware.CookieSessionMiddleware中间件放入您的MIDDLEWARE_CLASSES。此中间件设计为django.contrib.sessions.middleware.SessionMiddleware的替代品
管理命令
包含两个管理命令,以简化调试过程。
- decode_session_cookie
作为 ./manage.py decode_session_cookie <session_cookie_string> 调用,并打印会话字典的键和值。
- encode_session_cookie
将 key=val 参数编码成 cookie,以便手动插入浏览器进行测试。必须按照 ./manage.py encode_cookie key1=value key2=value 的方式调用命令。输出编码后的 cookie 字符串
项目详情
django-cookiesession-0.1.1.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 77a518c3adcbf27b6968a7189c07b3d8a72be2f8f30d90b4a7a98618992d880d |
|
MD5 | 75c197a7938dd314d2f0d8f9bb8b4745 |
|
BLAKE2b-256 | 7950596ae10a6fb6628c6695587b02e60ada0f2739ec2458456978c4d73c8662 |