# Django 5.2.8 documentation

# Django 1.5.3 versionsinformation

10 september 2013

Detta är Django 1.5.3, den tredje utgåvan i Django 1.5-serien. Den adresserar ett säkerhetsproblem och innehåller också en opt-in-funktion för att förbättra säkerheten för `django.contrib.sessions`.

## Sårbarhet för katalogtraversering i `ssi` malltagg

I tidigare versioner av Django var det möjligt att kringgå inställningen `ALLOWED_INCLUDE_ROOTS` som används för säkerhet med malltaggen `ssi` genom att ange en relativ sökväg som börjar med en av de tillåtna rötterna. Till exempel, om `ALLOWED_INCLUDE_ROOTS = ("/var/www",)` skulle följande vara möjligt:

    {% ssi "/var/www/../../etc/passwd" %}

I praktiken är detta inte ett särskilt vanligt problem, eftersom det skulle kräva att mallförfattaren placerar `ssi`-filen i en användarkontrollerad variabel, men det är möjligt i princip.

## Minskar en sårbarhet för exekvering av fjärrkod i `django.contrib.sessions`

`django.contrib.sessions` använder för närvarande `pickle` för att serialisera sessionsdata innan den lagras i backend. Om du använder signed cookie session backend och `SECRET_KEY` är känd av en angripare (det finns inte en inneboende sårbarhet i Django som skulle göra att den läcker), kan angriparen infoga en sträng i sessionen som, när den avplockas, exekverar godtycklig kod på servern. Tekniken för att göra detta är enkel och lätt tillgänglig på internet. Även om cookie-sessionslagringen signerar de cookie-lagrade uppgifterna för att förhindra manipulering, eskalerar en `SECRET_KEY`-läcka omedelbart till en sårbarhet för fjärrkörning av kod.

Denna attack kan motverkas genom att serialisera sessionsdata med JSON istället för `pickle`. För att underlätta detta introducerar Django 1.5.3 en ny inställning, `SESSION_SERIALIZER`, för att anpassa sessionens serialiseringsformat. För bakåtkompatibilitet är standardinställningen att använda `pickle`. Även om JSON-serialisering inte stöder alla Python-objekt som `pickle` gör, rekommenderar vi starkt att du byter till JSON-serialiserade värden. Eftersom JSON kräver strängnycklar kommer du sannolikt att stöta på problem om du använder nycklar som inte är strängar i `request.session`. Se Serialisering av session-dokumentationen för mer information.