跳转到主要内容

在cookies中安全地存储Django会话数据的方式

项目描述

此包包含一个用于替换django.contrib.sessions.middleware.SessionMiddleware的中间件,将所有会话数据存储在浏览器cookie中,而不是数据库中。代码基于Christopher Lenz的一个代码片段

为了防止用户篡改,会话字典经过以下编码步骤

  1. 将会话字典转换为JSON

  2. 使用JSON和网站的SECRET_KEY生成SHA1哈希

  3. 将JSON和SHA1哈希连接,gzip压缩并base64编码

解码后

  1. 将cookie进行base64解码和ungzip解压缩

  2. 将数据分为SHA1哈希和JSON数据

  3. 从接收到的JSON数据和网站的SECRET_KEY重新生成SHA1哈希

  4. 如果哈希不匹配,则引发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 (537.4 kB 查看哈希)

上传时间 源代码

由以下机构支持