December 18, 2019
Django 3.0.1 fixes a security issue and several bugs in 3.0.
By submitting a suitably crafted email address making use of Unicode characters, that compared equal to an existing user email when lower-cased for comparison, an attacker could be sent a password reset token for the matched account.
In order to avoid this vulnerability, password reset requests now compare the submitted email using the stricter, recommended algorithm for case-insensitive comparison of two identifiers from Unicode Technical Report 36, section 2.11.2(B)(2). Upon a match, the email containing the reset token will be sent to the email address on record rather than the submitted address.
DJANGO_ALLOW_ASYNC_UNSAFE
environment variable (#31056).RegexPattern
, used by
re_path()
, returned positional arguments to be passed to
the view when all optional named groups were missing (#31061).Window
expressions to be used in
conditions outside of queryset filters, e.g. in
When
conditions (#31060).SplitArrayField
. When using with
ArrayField(BooleanField())
, all values after the first True
value
were marked as checked instead of preserving passed values (#31073).Jul 27, 2022