2015年7月8日
Django1.7.9在1.7.8中修复了几个安全问题和错误。
在先前版本的django中,会话后端随时随地在会话存储中创建了一个新的空记录。 request.session
已访问,请求cookie中提供了一个会话密钥,但该密钥还没有会话记录。这可以让攻击者简单地通过发送带有未知会话密钥的重复请求来轻松创建许多新会话记录,可能会填满会话存储或导致其他用户的会话记录被逐出。
内置会话后端现在只在实际修改会话时创建会话记录;不创建空会话记录。因此,只有当站点选择向匿名用户公开会话修改视图时,这种潜在的DoS才是可能的。
由于每个内置会话后端都是单独修复的(而不是核心会话框架中的修复),第三方会话后端的维护人员应该检查其后端是否存在相同的漏洞,如果存在,则进行更正。
Django的一些内置验证器 (EmailValidator
最严重的是)没有禁止换行符(由于 $
而不是 \Z
在正则表达式中)。如果在HTTP响应或电子邮件头中使用换行符的值,则可能会遭受头注入攻击。Django本身并不脆弱,因为 HttpResponse
以及邮件发送实用程序 django.core.mail
分别禁止http和smtp头中的换行。虽然在Django中已经修复了验证程序,但是如果您以其他方式创建HTTP响应或电子邮件消息,最好确保这些方法也禁止换行。您可能还希望验证应用程序中的任何现有数据是否不包含意外的换行符。
validate_ipv4_address()
, validate_slug()
和 URLValidator
但也受到影响,从Django 1.6开始, GenericIPAddresseField
, IPAddressField
, SlugField
和 URLField
使用这些验证器的表单域都会删除输入,因此只有在表单域之外使用这些验证器时,才有可能输入数据。
未记录的,内部未使用的 validate_integer()
函数现在更严格了,因为它使用正则表达式进行验证,而不是简单地使用 int()
并检查是否引发异常。
7月 22, 2024