Naar de inhoud

Cross-site request forgery (CSRF)

CSRF misbruikt een aangemelde sessie voor een ongewenst verzoek. De sessiecookie alleen bewijst niet dat de gebruiker de handeling bedoelde.

Ook bekend alsCSRFXSRF
IT-beveiliging

Cross-site request forgery, kortweg CSRF of XSRF, is een aanval waarbij een andere website de browser aanzet tot een ongewenst verzoek aan een doelapplicatie. Stuurt de browser automatisch geldige aanmeldgegevens mee en ontbreekt passende bescherming, dan kan de applicatie het verzoek als opdracht van de aangemelde persoon behandelen.

Een wijziging in het projectportaal

Een fictief projectportaal laat het meldingsadres wijzigen in het veld notificationEmail. Iemand is daar aangemeld en bezoekt daarnaast een andere pagina. Die pagina probeert de wijziging uit te lokken. Of de sessiecookie wordt meegestuurd, hangt onder meer af van de cookieregels van de browser.

Het controleren van een geldige sessiecookie stelt vast bij welke sessie het verzoek hoort. Het bewijst niet dat de persoon deze adreswijziging bedoelde. Alleen POST gebruiken voorkomt de aanval evenmin.

Verzoeken beschermen die de toestand wijzigen

Voor een formulier kan het framework een onvoorspelbaar CSRF-token aanbieden dat aan de sessie is gekoppeld. De server controleert deze extra waarde vóór de wijziging. De bescherming moet daadwerkelijk voor de betrokken verzoeken worden gebruikt.

MDN beschrijft ook controles met Fetch-metadata, de browsergegevens over de context van een verzoek, en andere methoden die bij het verzoektype passen. Het cookieattribuut SameSite vormt een extra beschermingslaag. Dezelfde site en dezelfde origin (protocol, hostnaam en poort) zijn niet gelijk; verschillende subdomeinen kunnen bij dezelfde site horen. Een geldig CSRF-token vervangt bovendien niet de controle of de aangemelde persoon het adres mag wijzigen.

Bronnen