6 mars 2018
Django 2.0.3 åtgärdar två säkerhetsproblem och flera buggar i 2.0.2. Dessutom har de senaste strängöversättningarna från Transifex införlivats.
urlize och urlizetrunc¶Funktionen django.utils.html.urlize() var extremt långsam när den utvärderade vissa inmatningar på grund av katastrofala sårbarheter för backtracking i två reguljära uttryck. Funktionen urlize() används för att implementera mallfiltren urlize och urlizetrunc, som därmed var sårbara.
De problematiska reguljära uttrycken ersätts med parsinglogik som beter sig på liknande sätt.
truncatechars_html och truncatewords_html¶Om django.utils.text.Truncator’s chars() och words() metoder fick argumentet html=True, var de extremt långsamma att utvärdera vissa indata på grund av en katastrofal backtracking-sårbarhet i ett reguljärt uttryck. Metoderna chars() och words() används för att implementera mallfiltren truncatechars_html och truncatewords_html, som därmed var sårbara.
Backtracking-problemet i det reguljära uttrycket är åtgärdat.
Åtgärdat en regression som orsakade att skivad QuerySet.distinct().order_by() följt av count() kraschade (#29108).
Prioriterade inmatningsformaten för datetime och tid utan %f för den thailändska språkdräkten för att åtgärda widgeten för tidsväljare i admin som visade ”undefined” (#29109).
Fixad krasch med QuerySet.order_by(Exists(...)) (#29118).
Gjorde Q.deconstruct() deterministisk med flera nyckelordsargument (#29125). Du kan behöva ändra Q i befintliga migreringar, eller acceptera en autogenererad migrering.
Åtgärdade en regression där ett When()-uttryck med ett listargument kraschade (#29166).
Korrigerad krasch vid användning av ett Window()-uttryck i en underfråga (#29172).
Fixade kraschen i AbstractBaseUser.normalize_username() om argumentet username inte är en sträng (#29176).
aug. 11, 2025