Hoppa till innehållet

Cross-site request forgery (CSRF)

CSRF utnyttjar en inloggad session för en oönskad förfrågan. Sessionscookien ensam bevisar inte att personen avsåg handlingen.

Även känt somCSRFXSRF
IT-säkerhet

Cross-site request forgery, förkortat CSRF eller XSRF, är en attack där en annan webbplats får webbläsaren att skicka en oönskad förfrågan till en målapplikation. Om webbläsaren automatiskt skickar med giltiga inloggningsuppgifter och lämpligt skydd saknas kan applikationen behandla förfrågan som ett uppdrag från den inloggade personen.

En ändring i projektportalen

En fiktiv projektportal låter användaren ändra adressen för aviseringar i fältet notificationEmail. En person är inloggad där och besöker också en annan sida. Den sidan försöker utlösa ändringen. Om sessionscookien skickas med beror bland annat på webbläsarens cookieregler.

Kontroll av en giltig sessionscookie fastställer vilken session förfrågan tillhör. Den bevisar inte att personen avsåg denna adressändring. Att enbart använda POST hindrar inte heller attacken.

Skydda förfrågningar som ändrar tillstånd

För ett formulär kan ramverket ge en oförutsägbar CSRF-token kopplad till sessionen. Servern kontrollerar detta extra värde före ändringen. Skyddet måste faktiskt användas för de berörda förfrågningarna.

MDN beskriver även kontroller med Fetch-metadata, alltså webbläsaruppgifter om en förfrågans sammanhang, och andra metoder som passar förfrågningstypen. Cookieattributet SameSite är ett extra skyddslager. Samma site och samma origin (protokoll, värdnamn och port) är inte likvärdiga; olika underdomäner kan tillhöra samma site. En giltig CSRF-token ersätter inte heller kontrollen av om den inloggade personen får ändra adressen.

Källor