Ich versuche den CSRF-Schutz in einer App zu implementieren, die mit node.js unter Verwendung des express.js-Frameworks erstellt wurde. Die App nutzt reichlich Ajax-Post-Aufrufe an den Server. Ich verstehe, dass das connect-Framework CSRF-Middleware bereitstellt, aber ich bin mir nicht sicher, wie ich es im Rahmen der clientseitigen Ajax-Postanforderungen implementieren soll.Wie implementiert man CSRF-Schutz in Ajax-Aufrufen mit express.js (Suche nach einem vollständigen Beispiel)?
Es gibt Bits und Stücke darüber in anderen Fragen hier in Stackoverflow gepostet, aber ich habe noch ein einigermaßen vollständiges Beispiel finden, wie es von Client- und Server-Seiten zu implementieren.
Hat jemand ein funktionierendes Beispiel, das sie teilen möchten, wie man das umsetzt? Die meisten der Beispiele, die ich gesehen habe, gehen davon aus, dass Sie das Formular serverseitig rendern und es dann (zusammen mit dem eingebetteten Formularfeld csrf_token) an die Clientseite senden. In meiner App werden alle Inhalte auf der Client-Seite (einschließlich Vorlagen) über Backbone.js gerendert. Der gesamte Server stellt Werte im JSON-Format bereit, die von verschiedenen Modellen in Backbone.js auf der Clientseite verwendet werden. Durch mein Verständnis würde ich das csrf_token zuerst über Ajax abrufen müssen, bevor es verwendet werden kann. Ich bin jedoch besorgt, dass dies vom Standpunkt der Sicherheit aus problematisch sein könnte. Ist das ein berechtigtes Anliegen?
Danke für die schnelle Antwort. In meiner App werden alle clientseitigen Inhalte über Ajax ausgeführt. Das tatsächliche Rendern von Inhalten (einschließlich Vorlagen) wird auf der Client-Seite durchgeführt. Der gesamte Server stellt variable Daten für die Clientseite im JSON-Format bereit. Dies würde bedeuten, dass ich das CSRF-Token über Ajax zurückholen muss, um es in die Seite zu rendern, so dass es dann in der Ajax-Post-Anfrage zurückgeschickt werden kann. Ich bin besorgt, dass dies vom Standpunkt der Sicherheit aus problematisch sein könnte. Ist das ein berechtigtes Anliegen? – Benjen
Wenn Sie können, ist es ein guter Weg, CSRF zum Client zu bekommen, es in einem Meta-Tag (a la Rails) oder etwas Ähnlichem von Express zu rendern. –