CSRF (Cross-Site Request Forgery)

Alltags-Analogie

einem gefälschten Auftrag vergleichen, der scheinbar in deinem Namen, aber komplett ohne dein Wissen oder deine Zustimmung an eine Behörde oder Bank abgeschickt wird, etwa weil jemand deine bereits unterschriebene, aber noch nicht ausgefüllte Blanko-Vollmacht missbräuchlich verwendet hat

Was steckt dahinter?

CSRF, ausgeschrieben Cross-Site Request Forgery, lässt sich am besten mit einem gefälschten Auftrag vergleichen, der scheinbar in deinem Namen, aber komplett ohne dein Wissen oder deine Zustimmung an eine Behörde oder Bank abgeschickt wird, etwa weil jemand deine bereits unterschriebene, aber noch nicht ausgefüllte Blanko-Vollmacht missbräuchlich verwendet hat. Bei einem CSRF-Angriff bringt ein Angreifer einen bereits angemeldeten Nutzer dazu, ohne dessen bewusste Absicht eine bestimmte Aktion auf einer Webseite auszuführen, bei der dieser Nutzer aktuell eingeloggt ist. Konkret könnte ein Angreifer etwa einen präparierten Link verschicken, der – sobald der Nutzer ihn anklickt, während er gleichzeitig bei seiner Bank eingeloggt ist – im Hintergrund automatisch eine Überweisung auslöst, ohne dass der Nutzer dies bewusst beabsichtigt oder überhaupt bemerkt hat. Der Browser des Nutzers sendet dabei automatisch die vorhandenen Anmeldeinformationen (etwa Sitzungs-Cookies) mit, sodass die Webseite die Anfrage fälschlicherweise als legitime, vom Nutzer selbst gewollte Aktion einstuft. Der wirksamste technische Schutz gegen CSRF besteht in sogenannten CSRF-Tokens: einem einzigartigen, zufällig erzeugten Sicherheitscode, der bei jedem Formular einer Webseite mitgesendet werden muss und den ein externer Angreifer nicht im Voraus kennen oder erraten kann. Moderne Frameworks wie Laravel generieren solche CSRF-Tokens standardmäßig automatisch für jedes Formular und prüfen bei jeder eingehenden Anfrage automatisch, ob das mitgesendete Token tatsächlich gültig ist, sodass Entwickler sich um diesen wichtigen Schutzmechanismus in der Regel nicht mehr manuell kümmern müssen.