CSRF eller Cross-Site Request Forgery är en webbplatssårbarhet där en angripare kan orsaka att en åtgärd inträffar under ett offers session på en annan webbplats. En av de saker som gör CSRF till en så stor risk är att det inte ens kräver användarinteraktion, allt som behövs är att offret ska se en webbsida med exploateringen i den.
Tips: CSRF uttalas vanligtvis antingen bokstav för bokstav eller som "havssurfning".
Hur fungerar en CSRF-attack?
Attacken innebär att angriparen skapar en webbplats som har en metod att göra en begäran på en annan webbplats. Detta kan kräva användarinteraktion, som att få dem att trycka på en knapp, men det kan också vara interaktionslöst. I JavaScript finns det sätt att få en åtgärd att ske automatiskt. Till exempel kommer en bild från noll till noll pixlar inte att vara synlig för användaren men kan konfigureras så att dess "källa" gör en begäran till en annan webbplats.
JavaScript är ett språk på klientsidan, det betyder att JavaScript-kod körs i webbläsaren snarare än på webbservern. Tack vare detta faktum är den dator som gör CSRF-begäran faktiskt offrets. Tyvärr innebär detta att begäran görs med alla behörigheter som användaren har. När den attackerande webbplatsen har lurat offret att göra CSRF-begäran går begäran i princip inte att skilja från användaren som gör begäran normalt.
CSRF är ett exempel på en "förvirrad ställföreträdaresattack" mot webbläsaren eftersom webbläsaren luras att använda sina behörigheter av en angripare utan dessa privilegier. Dessa behörigheter är dina sessions- och autentiseringstokens till målwebbplatsen. Din webbläsare inkluderar automatiskt dessa uppgifter i varje begäran den gör.
CSRF-attacker är något komplicerade att arrangera. Först och främst måste målwebbplatsen ha ett formulär eller URL som har biverkningar som att ta bort ditt konto. Angriparen måste sedan skapa en begäran för att utföra den önskade åtgärden. Slutligen måste angriparen få offret att ladda en webbsida med utnyttjandet i den medan de är inloggade på målwebbplatsen.
För att förhindra CSRF-problem är det bästa du kan göra att inkludera en CSRF-token. En CSRF-token är en slumpmässigt genererad sträng som ställs in som en cookie, värdet måste inkluderas med varje svar tillsammans med en begäran-rubrik som inkluderar värdet. Även om en CSRF-attack kan inkludera cookien, är det inget sätt att kunna bestämma värdet på CSRF-token för att ställa in rubriken och så kommer attacken att avvisas.