Und zwar habe ich eine Login Tabelle. Jeder User der sich einloggt bekommt einen Eintrag in der Login Tabelle. Es wird ein zufälliger aber eindeutiger Wert erzeugt und sowohl in der Tabelle als auch in der Session gespeichert. Bei jeder Aktion die der Nutzer macht wird geprüft ob er noch angemeldet ist in dem die zwei Werte verglichen werden.
nimm 2 verschiedene tokens. eins als session-id und das andere in der login-tabelle als CSRF-token.
prüfe bei post-requests die session, die im cookie steht, und das token, das per formular übergeben wurde.
idealerweise solltest du das user-token regelmässig ändern.
oder du schreibst es nur mit in die session-tabelle rein.
Jetzt nehmen wir mal den Fall der User möchte seinen eigene Daten ändern. Ich benutze aktuell ein Formular mit method=post. Jetzt behaupte ich das Cross-Site-Request-Forgery bei mir nicht zutrifft, da man die Daten nicht mittels Link ändern kann - richtig?
CSRF ist auch bei post-requests möglich, lediglich etwas komplizierter auf der angreiferseite zu initiieren (i.d.R. javascript nötig).
es ist trotzdem sinnvoll, auf der serverseite zu prüfen, ob auch wirklich post verwendet wurde, schützt aber ohne CSRF-token nicht vor CSRF.