CSRF of Cross-Site Request Forgery is een kwetsbaarheid op een website waarbij een aanvaller een actie kan laten plaatsvinden in de sessie van een slachtoffer op een andere website. Een van de dingen die CSRF zo'n groot risico maakt, is dat het zelfs geen gebruikersinteractie vereist, het enige dat nodig is, is dat het slachtoffer een webpagina bekijkt met de exploit erin.
Tip: CSRF wordt over het algemeen letter voor letter of als "zeebranding" uitgesproken.
Hoe werkt een CSRF-aanval?
De aanval houdt in dat de aanvaller een website maakt die een methode heeft om een verzoek in te dienen op een andere website. Dit kan interactie van de gebruiker vereisen, zoals ervoor zorgen dat ze op een knop drukken, maar het kan ook interactieloos zijn. In JavaScript zijn er manieren om een actie automatisch te laten plaatsvinden. Een afbeelding van nul bij nul is bijvoorbeeld niet zichtbaar voor de gebruiker, maar kan zo worden geconfigureerd dat de "src" een verzoek doet aan een andere website.
JavaScript is een client-side taal, dit betekent dat JavaScript-code in de browser wordt uitgevoerd in plaats van op de webserver. Dankzij dit feit is de computer die het CSRF-verzoek doet eigenlijk die van het slachtoffer. Helaas betekent dit dat het verzoek wordt gedaan met alle machtigingen die de gebruiker heeft. Zodra de aanvallende website het slachtoffer heeft misleid om het CSRF-verzoek te doen, is het verzoek in wezen niet te onderscheiden van de gebruiker die het verzoek normaal doet.
CSRF is een voorbeeld van een "confused deputy-aanval" tegen de webbrowser, omdat de browser wordt misleid om zijn machtigingen te gebruiken door een aanvaller zonder die privileges. Deze machtigingen zijn uw sessie- en authenticatietokens voor de doelwebsite. Uw browser neemt deze gegevens automatisch op in elk verzoek dat hij doet.
CSRF-aanvallen zijn enigszins complex om te regelen. Allereerst moet de doelwebsite een formulier of URL hebben die bijwerkingen heeft, zoals het verwijderen van uw account. De aanvaller moet dan een verzoek opstellen om de gewenste actie uit te voeren. Ten slotte moet de aanvaller het slachtoffer ertoe brengen een webpagina te laden met de exploit erin terwijl ze zijn aangemeld bij de doelwebsite.
Om CSRF-problemen te voorkomen, kunt u het beste een CSRF-token toevoegen. Een CSRF-token is een willekeurig gegenereerde tekenreeks die is ingesteld als een cookie. De waarde moet bij elk antwoord worden opgenomen, naast een verzoekheader die de waarde bevat. Hoewel een CSRF-aanval de cookie kan bevatten, is het op geen enkele manier mogelijk om de waarde van het CSRF-token te bepalen om de header in te stellen en dus wordt de aanval afgewezen.