Zurück zu allen Artikeln
Best Practice Security Software Development

CSRF-Token verstehen: Verbesserung der Web-Sicherheit

In der heutigen vernetzten Welt ist die Web-Sicherheit von größter Bedeutung, um Benutzer und Daten vor bösartigen Angriffen zu schützen. Cross-Site Request Forgery (CSRF) ist eine weit verbreitete Bedrohung, die die Integrität von Webanwendungen gefährden kann. Um dieser Schwachstelle entgegenzuwirken, setzen Entwickler CSRF-Tokens als wesentliche Sicherheitsmaßnahme ein. In diesem Blogbeitrag erfahren Sie, was CSRF-Tokens sind, welche Probleme sie lösen sollen und welche Angriffsszenarien sie verhindern können.

Was sind CSRF-Token?

CSRF-Tokens, auch bekannt als Anti-CSRF-Tokens oder Synchronisierungs-Tokens, sind zufällige und eindeutige Tokens, die in Webformulare oder API-Anfragen eingebettet werden. Diese Token fungieren als Challenge-Response-Mechanismus, um Cross-Site Request Forgery-Angriffe zu verhindern.

Das Problem, das mit CSRF-Tokens gelöst werden soll

Cross-Site Request Forgery (CSRF) ist ein Angriff, bei dem ein unbefugter Benutzer den Browser eines Opfers dazu bringt, unerwünschte Aktionen auf einer vertrauenswürdigen Website auszuführen, auf der das Opfer authentifiziert ist. Dies geschieht, wenn das Opfer unwissentlich eine Anfrage (z. B. eine Formularübermittlung oder einen API-Aufruf) ohne seine ausdrückliche Absicht auslöst, was zu unbeabsichtigten Vorgängen wie Geldüberweisungen, Profilaktualisierungen oder Datenlöschung führen kann.

Der Angriff ist möglich, weil Browser bei Anfragen automatisch alle mit der Zielwebsite verknüpften Cookies einbeziehen, selbst wenn diese Anfragen von einer anderen Quelle (einer bösartigen Website) stammen. Da die meisten Webanwendungen für die Benutzerauthentifizierung auf Cookies angewiesen sind, nutzen CSRF-Angriffe dieses inhärente Vertrauen des Browsers aus, um im Namen des Opfers nicht autorisierte Aktionen durchzuführen.

Wie funktionieren CSRF-Tokens?

CSRF-Tokens funktionieren nach dem Prinzip der "Same-Origin-Policy", die sicherstellt, dass eine Webanwendung nur Anfragen an ihre eigene Domäne stellen kann und Anfragen von externen Quellen verhindert. Im Folgenden wird erläutert, wie CSRF-Tokens die CSRF-Bedrohung eindämmen:

  1. Token-Generierung: Wenn ein Benutzer eine Webseite mit einem Formular lädt oder eine authentifizierte Sitzung einleitet, generiert der Server ein zufälliges CSRF-Token und verknüpft es mit der Sitzung des Benutzers.
  2. Token-Einbindung: Das CSRF-Token wird dann in das Webformular oder die API-Anfrage als verstecktes Feld oder als benutzerdefinierte Kopfzeile eingefügt.
  3. Anforderungsüberprüfung: Wenn der Benutzer das Formular oder die API-Anfrage abschickt, prüft der Server die Gültigkeit des CSRF-Tokens mit derjenigen, die mit der Sitzung des Benutzers verbunden ist. Wenn sie übereinstimmen, wird die Anfrage als legitim angesehen und verarbeitet, andernfalls wird sie abgelehnt.

Vorteile von CSRF-Tokens

Durch die Verwendung von CSRF-Tokens können Webentwickler die folgenden Vorteile erzielen:

  1. Vermeidung unbeabsichtigter Aktionen: CSRF-Tokens stellen sicher, dass die in der Webanwendung durchgeführten Aktionen beabsichtigt sind und nur von authentifizierten Benutzern initiiert werden, wodurch das Risiko nicht autorisierter Anfragen verringert wird.
  2. Verbesserung der Sicherheit von Webanwendungen: CSRF-Tokens dienen als zusätzliche Verteidigungsschicht gegen CSRF-Angriffe und machen es böswilligen Akteuren schwerer, anfällige Endpunkte auszunutzen.
  3. Einfache Implementierung: Die Implementierung von CSRF-Tokens ist relativ einfach, und viele Webentwicklungs-Frameworks bieten integrierte Unterstützung für die Erzeugung und Validierung von Tokens.

Vermeidung eines potenziellen Angriffsszenarios

Betrachten wir ein Szenario, in dem eine Bank-Webanwendung es Benutzern ermöglicht, Geldbeträge durch das Absenden eines Formulars zu überweisen. Wenn diese Anwendung nicht über einen CSRF-Schutz verfügt, könnte ein Angreifer eine bösartige Website erstellen und Benutzer dazu verleiten, diese zu besuchen. Auf der bösartigen Website könnte die Seite des Angreifers automatisch ein verstecktes Formular an die Bankanwendung übermitteln und so eine Geldüberweisung ohne das Wissen des Benutzers einleiten.

Um diesen Angriff zu verhindern, kann die Bankanwendung CSRF-Tokens implementieren. Wenn Benutzer die Bankwebsite besuchen, erhalten sie ein CSRF-Token, das mit ihrer Sitzung verknüpft ist. Jede Überweisungsanforderung würde das Vorhandensein und die Validierung dieses CSRF-Tokens erfordern. Selbst wenn ein Angreifer versucht, eine Anfrage zu fälschen, verfügt er nicht über das gültige CSRF-Token, und die Anfrage wird vom Server zurückgewiesen.

Schlussfolgerung

Zusammenfassend lässt sich sagen, dass CSRF-Tokens eine grundlegende Sicherheitsmaßnahme sind, die von Webentwicklern eingesetzt wird, um ihre Anwendungen gegen Cross-Site Request Forgery-Angriffe zu schützen. Durch die Generierung eindeutiger Token für jede Benutzersitzung und deren Validierung bei jeder Anfrage stellen CSRF-Tokens sicher, dass nur autorisierte Aktionen verarbeitet werden, und verhindern so den unbefugten Zugriff und die Manipulation von Benutzerdaten. Da Webanwendungen weiterhin einen wichtigen Teil unseres digitalen Lebens ausmachen, ist die Investition in Sicherheitsmaßnahmen wie CSRF-Tokens von entscheidender Bedeutung, um das Vertrauen der Benutzer zu erhalten und sensible Daten zu schützen.