Django 1.1.3 版本发行说明

欢迎来到 Django 1.1.3 版本!

这是 Django 1.1 系列的第三个“修复错误”版本,改进了 Django 1.1 代码库的稳定性和性能。

除一个例外之外,Django 1.1.3 与 Django 1.1.2 保持向后兼容。它还包含了一些修复和其他改进。对于当前使用或针对 Django 1.1 的任何开发或部署,Django 1.1.2 是一个推荐的升级版本。

有关 1.1 分支中新功能、向后不兼容性和已弃用功能的详细信息,请参阅 Django 1.1 版本发行说明

不向后兼容的变更

在管理界面中的受限过滤器

Django 的管理界面,django.contrib.admin,支持通过对应模型上的字段对显示的对象列表进行筛选,包括跨数据库级别的关系。这是通过在 URL 的查询字符串部分传递查找参数来实现的,ModelAdmin 类上的选项允许开发人员指定特定字段或关系,这将生成自动链接用于筛选。

一个历史上未记录且非官方支持的功能是,用户如果对模型结构和查询参数的格式有足够的了解,可以通过操作查询字符串来动态创建有用的新过滤器。

然而,已经证明这种方法可以被滥用来获取管理员用户权限之外的信息。例如,如果攻击者能够访问管理员权限并且对模型结构和关联关系有足够的了解,他们可以构造查询字符串,通过重复使用 Django 数据库 API 支持的正则表达式查询,来获取敏感信息,例如用户的密码哈希值。

为了解决这个问题,django.contrib.admin 现在会验证查询字符串查找参数,要么只指定在正在查看的模型上的字段,要么跨关系,并且这些跨关系必须是应用程序开发人员使用上述现有机制明确允许的。对于依赖先前能力插入任意查找的用户来说,这是不兼容的。

Back to Top