# Django 6.0.7 documentation

# Django 1.5.9 versionsinformation

20 augusti 2014

Django 1.5.9 åtgärdar flera säkerhetsproblem i 1.5.8.

## `reverse()` kan generera webbadresser som pekar till andra värdar

I vissa situationer kan URL-reversering generera schemarelativa URL:er (URL:er som börjar med två snedstreck), som oväntat kan omdirigera en användare till en annan värd. En angripare kan utnyttja detta, t.ex. genom att omdirigera användare till en nätfiskewebbplats som är utformad för att be om användarens lösenord.

För att åtgärda detta säkerställer URL-reversering nu att ingen URL börjar med två snedstreck (//), och ersätter det andra snedstrecket med dess URL-kodade motsvarighet (%2F). Detta tillvägagångssätt säkerställer att semantiken förblir densamma, samtidigt som URL:en blir relativ till domänen och inte till schemat.

## Förnekande av tjänst vid filuppladdning

Före den här utgåvan kan Djangos filuppladdningshantering i sin standardkonfiguration försämras till att producera ett stort antal `os.stat()` systemanrop när ett duplicerat filnamn laddas upp. Eftersom `stat()` kan anropa IO kan detta ge en enorm databeroende nedgång som långsamt förvärras över tiden. Nettoresultatet är att en användare som har möjlighet att ladda upp filer under tillräckligt lång tid kan orsaka dålig prestanda i uppladdningshanteraren och till slut göra den mycket långsam bara genom att ladda upp 0-byte-filer. Vid det här laget räcker det med en långsam nätverksanslutning och ett fåtal HTTP-förfrågningar för att göra en webbplats otillgänglig.

We’ve remedied the issue by changing the algorithm for generating file names if a file with the uploaded name already exists. `Storage.get_available_name` now appends an underscore plus a random 7 character alphanumeric string (e.g. `"_x3a1gho"`), rather than iterating through an underscore followed by a number (e.g. `"_1"`, `"_2"`, etc.).

## `RemoteUserMiddleware` kapning av session

När man använder `RemoteUserMiddleware` och `RemoteUserBackend`, kan en ändring av `REMOTE_USER`-huvudet mellan förfrågningar utan en mellanliggande utloggning resultera i att den tidigare användarens session tas över av den efterföljande användaren. Mellanvaran loggar nu ut användaren vid ett misslyckat inloggningsförsök.

## Dataläckage via manipulering av frågesträngar i `contrib.admin`

I äldre versioner av Django var det möjligt att avslöja data för valfritt fält genom att ändra parametrarna ”popup” och ”to_field” i frågesträngen på en sida med adminändringsformulär. Till exempel, genom att begära en URL som `/admin/auth/user/?pop=1&t=password` och visa sidans HTML kunde man visa lösenordshash för varje användare. Även om administratören kräver att användarna har behörighet att visa ändringsformulärsidorna i första hand, kan detta läcka data om du förlitar dig på att användarna bara har tillgång till att visa vissa fält i en modell.

För att lösa problemet kommer nu ett undantag att uppstå om ett `to_field`-värde som inte är ett relaterat fält till en modell som har registrerats hos administratören anges.