# Django 5.2.8 documentation

# Django 1.8.3 versionsinformation

8 juli 2015

Django 1.8.3 åtgärdar flera säkerhetsproblem och buggar i 1.8.2.

Dessutom döptes `django.utils.deprecation.RemovedInDjango20Warning` om till `RemovedInDjango110Warning` eftersom versionsplanen reviderades till 1.9, 1.10, 1.11 (LTS), 2.0 (släpper Python 2-stöd). För bakåtkompatibilitet kvarstår `RemovedInDjango20Warning` som ett importerbart alias.

## Möjligheten att neka tjänst genom att fylla sessionslagret

I tidigare versioner av Django skapade sessionsbackends en ny tom post i sessionslagret varje gång `request.session` öppnades och det fanns en sessionsnyckel som tillhandahölls i begäran cookies som inte redan hade en sessionspost. Detta kan göra det möjligt för en angripare att enkelt skapa många nya sessionsposter helt enkelt genom att skicka upprepade förfrågningar med okända sessionsnycklar, vilket potentiellt kan fylla upp sessionslagret eller orsaka att andra användares sessionsposter kastas ut.

De inbyggda sessionsbackends skapar nu en sessionspost endast om sessionen faktiskt ändras; tomma sessionsposter skapas inte. Därför är denna potentiella DoS nu endast möjlig om webbplatsen väljer att exponera en sessionsmodifierande vy för anonyma användare.

Eftersom varje inbyggd sessionsbackend åtgärdades separat (i stället för en åtgärd i kärnramverket för sessioner), bör underhållare av sessionsbackends från tredje part kontrollera om samma sårbarhet finns i deras backend och åtgärda den om så är fallet.

## Möjlighet att injicera rubriker eftersom validerare accepterar nya rader i indata

Vissa av Djangos inbyggda validerare (`EmailValidator`, mest allvarligt) förbjöd inte tecken med nya rader (på grund av användningen av `$` istället för `\Z` i de reguljära uttrycken). Om du använder värden med nya rader i HTTP-svar eller e-postheaders kan du drabbas av header injection-attacker. Django i sig är inte sårbart eftersom `HttpResponse` och verktygen för att skicka e-post i `django.core.mail` förbjuder nya rader i HTTP- respektive SMTP-rubriker. Validerarna har åtgärdats i Django, men om du skapar HTTP-svar eller e-postmeddelanden på andra sätt är det en bra idé att se till att dessa metoder också förbjuder nya rader. Du kanske också vill validera att befintliga data i din applikation inte innehåller oväntade nya rader.

`validate_ipv4_address()`, `validate_slug()`, och `URLValidator` påverkas också, men från och med Django 1.6 formfälten `GenericIPAddresseField`, `IPAddressField`, `SlugField` och `URLField` som använder dessa validerare alla inmatningen, så möjligheten att nya rader kommer in i dina data finns bara om du använder dessa validerare utanför formfälten.

Den odokumenterade, internt oanvända funktionen `validate_integer()` är nu striktare eftersom den validerar med hjälp av ett reguljärt uttryck istället för att bara kasta värdet med `int()` och kontrollera om ett undantag uppstod.

## Denial-of-service-möjlighet i URL-validering

`URLValidator` inkluderade ett reguljärt uttryck som var extremt långsamt att utvärdera mot vissa ogiltiga indata. Detta reguljära uttryck har förenklats och optimerats.

## Buggrättningar

- Fixade `BaseRangeField.prepare_value()` till att använda varje `base_field`’s `prepare_value()` metod (#24841).

- Korrigerad krasch under `makemigrations` om en migrationsmodul antingen saknar `__init__.py` eller är en fil (#24848).

- Fixade `QuerySet.exists()` som returnerade felaktiga resultat efter annotering med `Count()` (#24835).

- Rättad `HStoreField.has_changed()` (#24844).

- Återställde en optimering av CSRF-mallkontextprocessorn som orsakade en regression (#24836).

- Åtgärdade en regression som gjorde att mallkontextprocessorer skrev över variabler som ställts in på en `RequestContext` efter att den skapats (#24847).

- Förhindrade förlust av kolumnegenskaper för `null`/not null` under fältomdöpning av MySQL-databaser (#24817).

- Fixade en krasch när man använde en omvänd ett-till-ett-relation i `ModelAdmin.list_display` (#24851).

- Fixat citat av SQL när du byter namn på ett fält till `AutoField` i PostgreSQL (#24892`).

- Åtgärdat avsaknad av unik begränsning när ett fält ändras från `primary_key=True` till `unique=True` (#24893).

- Fixat queryset pickling när man använder `prefetch_related()` efter att ha tagit bort objekt (#24831).

- Tillåtet att använda `choices` längre än 1 dag med `DurationField` (#24897).

- Åtgärdade en krasch vid laddning av krossade migreringar från två appar med ett beroende mellan dem, där den beroende appens ersatta migreringar delvis tillämpas (#24895).

- Korrigerad registrering av tillämpad status för krossade (ersättande) migreringar (#24628).

- Fixade queryset-annoteringar när man använder `Case`-uttryck med `exclude()` (#24833).

- Korrigerad join-marknadsföring för flera `Case`-uttryck. Om en fråga kommenterades med flera `Case`-uttryck kunde resultat oväntat filtreras bort (#24924).

- Fast användning av transforms i underfrågor (#24744).

- Fixade `SimpleTestCase.assertRaisesMessage()` på Python 2.7.10 (#24903).

- Bättre bakåtkompatibilitet för argumentet `verbosity` i hanteringskommandon `optparse` genom att omvandla det till ett heltal (#24769).

- Fixade `prefetch_related()` på andra databaser än PostgreSQL för modeller som använder UUID-primärnycklar (#24912).

- Fixat borttagning av `unique_together`-begränsningar på MySQL (#24972).

- Fixad krasch vid uppladdning av bilder med MIME-typer som Pillow inte upptäcker, t.ex. bitmap, i `forms.ImageField` (#24948).

- Åtgärdade en regression vid borttagning av en modell via admin som har en `GenericRelation` med ett `related_query_name` (#24940).

- Tillåter icke-ASCII-värden för `ForeignKey.related_name` på Python 3 genom att åtgärda systemkontrollen för falska positiva (#25016).

- Fixade inline-formulär som använder ett överordnat objekt som har en primärnyckel av typen `UUIDField` och ett underordnat objekt som har en primärnyckel av typen `AutoField` (#24958`).

- Åtgärdade en regression i mallfiltret `unordered_list` på vissa inmatningar (#25031).

- Åtgärdade en regression i `URLValidator` som ogiltigförklarade Punycode TLD:er (#25059).

- Förbättrad pollning av `runserver` från `pyinotify` (#23882).