Django 1.4.2 release notes

17 oktober 2012

Detta är den andra säkerhetsreleasen i Django 1.4-serien.

Förgiftning av värdhuvud

Vissa delar av Django - oberoende av slutanvändarskrivna applikationer - använder sig av fullständiga webbadresser, inklusive domännamn, som genereras från HTTP Host-headern. Vissa attacker mot detta är bortom Djangos förmåga att kontrollera och kräver att webbservern är korrekt konfigurerad; Djangos dokumentation har under en tid innehållit anteckningar som ger användarna råd om sådan konfiguration.

Djangos egen inbyggda parsning av Host-headern är dock fortfarande sårbar, vilket rapporterades till oss nyligen. Host-header-parsningen i Django 1.3.3 och Django 1.4.1 - specifikt django.http.HttpRequest.get_host() - hanterade felaktigt information om användarnamn/lösenord i headern. Således skulle till exempel följande Host-header accepteras av Django när det körs på validsite.com:

Host: validsite.com:random@evilsite.com

Med hjälp av detta kan en angripare få delar av Django - särskilt mekanismen för återställning av lösenord - att generera och visa godtyckliga webbadresser för användare.

För att åtgärda detta har parsningen i HttpRequest.get_host() ändrats; Host-rubriker som innehåller potentiellt farligt innehåll (t.ex. par av användarnamn/lösenord) ger nu upphov till undantaget django.core.exceptions.SuspiciousOperation.

Detaljer om detta problem publicerades ursprungligen online som en ”säkerhetsrådgivning”.

Bakåtkompatibla förändringar

  • De nyligen introducerade GenericIPAddressField-konstruktörsargumenten har anpassats för att matcha dem för alla andra modellfält. De två första nyckelordsargumenten är nu verbose_name och name.

Andra buggfixar och ändringar

  • Underklass HTMLParser endast för lämpliga Python-versioner (#18239).

  • Lagt till batch_size-argument till qs.bulk_create() (#17788).

  • Åtgärdade en liten regression i adminfiltren där felaktigt formaterade datum som skickades som url-parametrar orsakade ett ohanterat ValidationError (#18530).

  • Åtgärdat ett fel med en oändlig loop vid åtkomst till behörigheter i mallar (#18979)

  • Åtgärdat vissa kompatibilitetsproblem med Python 2.5

  • Åtgärdat ett problem med citerade filnamn i Content-Disposition-huvudet (#19006)

  • Kontextalternativet i taggarna trans och blocktrans accepterade bokstavstecken med enkla citattecken (#18881).

  • Många förbättringar och korrigeringar av dokumentationen.