Nehmen wir an, ein Nutzer hat sich auf einer Onlineplattform angemeldet. Nach dem Log-in bleibt der Anwender für die Dauer der Session (diese Zeitspanne wird ganz unterschiedlich gehandhabt) angemeldet – ohne sein Passwort erneut eingeben zu müssen. Diesen Umstand macht sich der Internetkriminelle zunutze: Angemeldete Nutzer können schließlich meist mehr und auch tiefer greifende Aktionen durchführen als nicht anmeldete User.
Das Prinzip von CSRF kurz erklärt: Während der Nutzer also in dem Portal angemeldet ist, besucht er auch eine andere und zwar vom Hacker erstellte Website. Dort führt der Nutzer irgendeine Aktion aus, beispielsweise das Drücken eines Buttons. Der Angreifer sendet infolgedessen einen HTTP-Request an das vom User genutzte Portal und führt unter der Identität des Users eine schädliche Aktion aus, da die Session noch aktiv ist. Um dies erreichen zu können, muss der Angreifer nur den korrekten HTTP-Request kennen, welcher sich aber relativ leicht auslesen lässt.
Der Server des Portals erkennt den HTTP-Request als korrekt formuliert an und merkt über die entsprechenden Cookies auch, dass der Nutzer (bzw. dessen Browser) noch eingeloggt ist. Der Server führt die Aktion aus und der Nutzer registriert möglicherweise nicht, dass gerade in seinem Namen eine Handlung durchgeführt wurde.
Die CSRF-Attacke ist deswegen erfolgreich, weil der empfangende Server nicht überprüft, woher die Anfrage überhaupt kommt. Es ist also nicht bekannt, ob der HTTP-Request durch die eigene Website erzeugt wurde oder eine fremde Quelle hat. Der Angreifer macht sich dabei eine Schwäche des Browsers zunutze: Dieser leitet die Anfragen weiter, ohne die Konsequenzen zu beurteilen.
Drei Varianten von CSRF-Attacken werden besonders häufig durchgeführt: Am populärsten dürfte das Unterschieben einer URL sein. Diese wird auf einer externen Website oder in einer E-Mail versteckt. Der Aufruf dieser URL löst den HTTP-Request aus. Prinzipiell ist so eine URL für den Nutzer durchaus sichtbar, sofern er denn genau darauf achtet. Mithilfe von Social Engeneering und URL-Spoofing kann der Ursprung der URL aber verschleiert werden.
Es gibt auch Anknüpfungspunkte zum sogenannten Cross-Site-Scripting (XSS): Statt eine eigene schadhafte Website aufzubauen, manipulieren einige Hacker eine bereits bestehende Website über XSS, die dann ohne Wissen des Betreibers für kriminelle Aktionen genutzt wird. In der Regel wird bei dieser Attacke einer Website JavaScript untergeschoben, das dann wiederum die CSRF-Attacke durchführt.
Auch wenn Angreifer es schaffen, Schad-Software auf dem Computer des Opfers unterzubringen, ist eine Cross-Site-Request-Forgery-Attacke möglich. So kann der Angreifer den Browser direkt anweisen, die HTTP-Anfrage zu senden. Wer allerdings Viren oder Malware auf dem Client unterbringen kann, hat noch zahlreiche weitere Angriffsmöglichkeiten.