Sobes.tech
Junior

Wat is CSRF?

sobes.tech AI

Antwoord van AI

CSRF (Cross-Site Request Forgery) — is een soort aanval waarbij een aanvaller een gebruiker dwingt om ongewenste acties uit te voeren op een website waar de gebruiker al is geauthenticeerd.

De kern van de aanval is dat een kwaadaardige site of e-mail een verzoek bevat dat de browser van de gebruiker automatisch naar de doelwebsite stuurt. Als de gebruiker is ingelogd op de doelwebsite, zal zijn browser cookies verzenden en wordt het verzoek uitgevoerd met zijn rechten.

Dit kan bijvoorbeeld een verzoek zijn om het wachtwoord te wijzigen, geld over te maken of een account te verwijderen.

Om zich te beschermen tegen CSRF worden verschillende methoden gebruikt:

  • CSRF-tokens: geheime, unieke tokens voor elke aanvraag, gegenereerd op de server en meegestuurd met elk formulier of AJAX-verzoek. De server controleert of het ontvangen token overeenkomt.
  • SameSite cookie-attribuut: stelt een regel in waarbij cookies alleen naar de server worden gestuurd bij verzoeken van hetzelfde domein waar ze zijn ingesteld.
  • Verificatie van Origin- en Referer-headers: de server controleert waar het verzoek vandaan komt. Deze headers kunnen echter door een aanvaller worden gewijzigd of ontbreken in sommige gevallen.
  • Vereist her-authenticatie voor kritieke acties: vraag om wachtwoord voordat belangrijke operaties worden uitgevoerd.

De meest effectieve en gangbare methode is het gebruik van CSRF-tokens.

// Voorbeeld van het toevoegen van een CSRF-token aan een formulier
<form action="/transfer" method="POST">
  <input type="hidden" name="_csrf_token" value="door de server gegenereerde token">
  <input type="number" name="amount">
  <button type="submit">Overmaken</button>
</form>
// Voorbeeld van het controleren van een CSRF-token op de server (Node.js met Express)
app.post('/transfer', csrfProtection, (req, res) => {
  // Verwerking van het verzoek na succesvolle tokencontrole
});