2014年5月14日
Django 1.5.8修复了1.5.8中的两个安全问题。
在某些情况下,Django可以允许高速缓存存储与特定会话相关的私有数据,然后将该数据提供给具有不同会话或根本没有会话的请求。这可能导致信息泄露,并且可能是缓存中毒的向量。
使用Django会话时,Django将设置Vary: Cookie头,以确保缓存不会向其他会话的请求提供缓存数据。但是,较旧版本的Internet Explorer(最可能只有Internet Explorer 6和Internet Explorer 7(如果在Windows XP或Windows Server 2003上运行))无法处理Vary头和许多内容类型。因此,如果请求是由Internet Explorer创建的,Django将删除头。
为了解决这个问题,这些旧的Internet Explorer版本的特殊行为已被删除,并且不再从响应中剥离Vary头。此外,对具有Content-Disposition头的所有Internet Explorer请求对Cache-Control头的修改也已删除,因为它们被发现有类似的问题。
重定向的验证没有正确验证一些格式不正确的网址,某些浏览器可以接受。这允许用户意外地重定向到不安全的URL。
Django在一些情况下依赖于用户输入(例如,django.contrib.auth.views.login(),django.contrib.comments和i18n)将用户重定向到“on成功“URL。这些重定向(即django.utils.http.is_safe_url())的安全检查未正确验证某些格式错误的网址,例如http:\\\ djangoproject.com ,一些浏览器接受更自由的URL解析。
为了弥补这一点,在is_safe_url()中的验证已经收紧,以便能够处理并正确验证这些格式错误的URL。
2015年5月13日