{"title":"Django 5.2.8 release notes","version":"dev","locale":"en","docname":"releases/5.2.8","url":"/en/dev/releases/5.2.8/","canonical":"https://djangodocs.dev/en/dev/releases/5.2.8/","summary":"Django 5.2.8 fixes one security issue with severity “high”, one security issue with severity “moderate”, and several bugs in 5.2.7.","html":"<h1>Django 5.2.8 release notes<a class=\"heading-anchor\" href=\"#django-5-2-8-release-notes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p><em>November 5, 2025</em></p>\n<p>Django 5.2.8 fixes one security issue with severity “high”, one security issue\nwith severity “moderate”, and several bugs in 5.2.7. It also adds compatibility\nwith Python 3.14.</p>\n<section id=\"cve-2025-64458-potential-denial-of-service-vulnerability-in-httpresponseredirect-and-httpresponsepermanentredirect-on-windows\">\n<h2>CVE-2025-64458: Potential denial-of-service vulnerability in <code class=\"docutils literal notranslate\">HttpResponseRedirect</code> and <code class=\"docutils literal notranslate\">HttpResponsePermanentRedirect</code> on Windows<a class=\"heading-anchor\" href=\"#cve-2025-64458-potential-denial-of-service-vulnerability-in-httpresponseredirect-and-httpresponsepermanentredirect-on-windows\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Python’s <a class=\"reference external\" href=\"https://docs.python.org/3/library/unicodedata.html#unicodedata.normalize\" title=\"(in Python v3.14)\"><code class=\"xref py py-func docutils literal notranslate\">NFKC normalization</code></a> is slow on\nWindows. As a consequence, <a class=\"reference internal\" href=\"/en/dev/ref/request-response/#django.http.HttpResponseRedirect\" title=\"django.http.HttpResponseRedirect\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponseRedirect</code></a>,\n<a class=\"reference internal\" href=\"/en/dev/ref/request-response/#django.http.HttpResponsePermanentRedirect\" title=\"django.http.HttpResponsePermanentRedirect\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponsePermanentRedirect</code></a>, and the shortcut\n<a class=\"reference internal\" href=\"/en/dev/topics/http/shortcuts/#django.shortcuts.redirect\" title=\"django.shortcuts.redirect\"><code class=\"xref py py-func docutils literal notranslate\">redirect()</code></a> were subject to a potential\ndenial-of-service attack via certain inputs with a very large number of Unicode\ncharacters (follow up to <span class=\"target\" id=\"index-0\"></span><a class=\"cve reference external\" href=\"https://www.cve.org/CVERecord?id=CVE-2025-27556\"><strong>CVE 2025-27556</strong></a>).</p>\n</section>\n<section id=\"cve-2025-64459-potential-sql-injection-via-connector-keyword-argument\">\n<h2>CVE-2025-64459: Potential SQL injection via <code class=\"docutils literal notranslate\">_connector</code> keyword argument<a class=\"heading-anchor\" href=\"#cve-2025-64459-potential-sql-injection-via-connector-keyword-argument\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p><a class=\"reference internal\" href=\"/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.filter\" title=\"django.db.models.query.QuerySet.filter\"><code class=\"xref py py-meth docutils literal notranslate\">QuerySet.filter()</code></a>, <a class=\"reference internal\" href=\"/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.exclude\" title=\"django.db.models.query.QuerySet.exclude\"><code class=\"xref py py-meth docutils literal notranslate\">exclude()</code></a>, <a class=\"reference internal\" href=\"/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.get\" title=\"django.db.models.query.QuerySet.get\"><code class=\"xref py py-meth docutils literal notranslate\">get()</code></a>,\nand <a class=\"reference internal\" href=\"/en/dev/ref/models/querysets/#django.db.models.Q\" title=\"django.db.models.Q\"><code class=\"xref py py-class docutils literal notranslate\">Q</code></a> were subject to SQL injection using a suitably crafted\ndictionary, with dictionary expansion, as the <code class=\"docutils literal notranslate\">_connector</code> argument.</p>\n</section>\n<section id=\"bugfixes\">\n<h2>Bugfixes<a class=\"heading-anchor\" href=\"#bugfixes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<ul class=\"simple\">\n<li><p>Added compatibility for <code class=\"docutils literal notranslate\">oracledb</code> 3.4.0 (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/36646\">#36646</a>).</p></li>\n<li><p>Fixed a bug in Django 5.2 where <code class=\"docutils literal notranslate\">QuerySet.first()</code> and <code class=\"docutils literal notranslate\">QuerySet.last()</code>\nraised an error on querysets performing aggregation that selected all fields\nof a composite primary key (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/36648\">#36648</a>).</p></li>\n<li><p>Fixed a bug in Django 5.2 where proxy models having a <code class=\"docutils literal notranslate\">CompositePrimaryKey</code>\nincorrectly raised a <code class=\"docutils literal notranslate\">models.E042</code> system check error (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/36704\">#36704</a>).</p></li>\n</ul>\n</section>","rootId":"django-5-2-8-release-notes","toc":[{"title":"CVE-2025-64458: Potential denial-of-service vulnerability in HttpResponseRedirect and HttpResponsePermanentRedirect on Windows","anchor":"cve-2025-64458-potential-denial-of-service-vulnerability-in-httpresponseredirect-and-httpresponsepermanentredirect-on-windows","children":[]},{"title":"CVE-2025-64459: Potential SQL injection via _connector keyword argument","anchor":"cve-2025-64459-potential-sql-injection-via-connector-keyword-argument","children":[]},{"title":"Bugfixes","anchor":"bugfixes","children":[]}],"breadcrumbs":[{"docname":"releases/index","title":"Release notes","url":"/en/dev/releases/"}],"prev":{"docname":"releases/5.2.9","title":"Django 5.2.9 release notes","url":"/en/dev/releases/5.2.9/"},"next":{"docname":"releases/5.2.7","title":"Django 5.2.7 release notes","url":"/en/dev/releases/5.2.7/"},"formats":{"html":"/en/dev/releases/5.2.8/","markdown":"/en/dev/releases/5.2.8.md","json":"/en/dev/releases/5.2.8.json"},"source":"https://github.com/django/django/blob/main/docs/releases/5.2.8.txt","official":"https://docs.djangoproject.com/en/dev/releases/5.2.8/","inVersions":["dev","6.1","6.0","5.2"],"inLocales":["en"]}