Ich verwende eine Bibliothek von Drittanbietern, die eine rohe XMLHttpRequest
mit new XMLHttpRequest
hervorbringt.
Dies umgeht meinen CSRF-Schutz und wird von meinem Rails-Server abgeschossen.
Gibt es eine Möglichkeit, global ein vordefiniertes CSRF-Token ( $('meta[name=csrf-token]').attr('content')
) allen Instanzen von XMLHttpRequest
zur Instanziierungszeit hinzuzufügen?
Ich würde empfehlen Aufrufe auf die Methode send
zu abfangen:
Dies fügt den Header nicht zur Instanziierungszeit hinzu, sondern direkt bevor die Anfrage gesendet wird. Sie können auch Aufrufe von new XMLHttpRequest()
abfangen, aber das ist nicht hilfreich, da Sie mit dem Hinzufügen der Kopfzeile warten müssen, bis open
aufgerufen wurde.
Sie möchten vielleicht auch einen Test für die Ziel-URL der Anfrage einfügen, so dass Sie nur die Kopfzeile hinzufügen, wenn Ihre eigene API aufgerufen wird. Anderenfalls könnte das Token an anderer Stelle undicht werden oder sogar domänenübergreifende CORS-Aufrufe, die diesen Header nicht zulassen, unterbrochen werden.
Tags und Links javascript security ajax xmlhttprequest csrf