=========================== Django 4.2.29 release notes =========================== *March 3, 2026* Django 4.2.29 fixes a security issue with severity "moderate" and a security issue with severity "low" in 4.2.28. CVE-2026-25673: Potential denial-of-service vulnerability in ``URLField`` via Unicode normalization on Windows ============================================================================================================== The :class:`~django.forms.URLField` form field's ``to_python()`` method used :func:`~urllib.parse.urlsplit` to determine whether to prepend a URL scheme to the submitted value. On Windows, ``urlsplit()`` performs :func:`NFKC normalization `, which can be disproportionately slow for large inputs containing certain characters. ``URLField.to_python()`` now uses a simplified scheme detection, avoiding Unicode normalization entirely and deferring URL validation to the appropriate layers. As a result, while leading and trailing whitespace is still stripped by default, characters such as newlines, tabs, and other control characters within the value are no longer handled by ``URLField.to_python()``. When using the default :class:`~django.core.validators.URLValidator`, these values will continue to raise :exc:`~django.core.exceptions.ValidationError` during validation, but if you rely on custom validators, ensure they do not depend on the previous behavior of ``URLField.to_python()``. This issue has severity "moderate" according to the :ref:`Django security policy `.