Hängt . Wenn der Angreifer kein MITM ist, da er den Datenverkehr zwischen Ihrer Webanwendung und dem API-Server nicht belauschen kann, sollte ein einzelnes CSRF-Token für die gesamte Sitzung ausreichen.
Vorausgesetzt, dass Sie sensible Vorgänge auch auf der Serverseite schützen (dh Zugriff auf Ressourcen nur dem Eigentümer der Ressource erlauben, zB "mein Konto löschen" usw.), würde das Token sicherstellen, dass der Browser die Anfrage stellt der legitime, authentifizierte Benutzer Browser. Das ist alles, worüber du dich sorgen solltest, denke ich.
Auf der anderen Seite, wenn der Angreifer in der Lage ist, nicht sicheren Datenverkehr zwischen der Webanwendung und Ihrer API zu betrachten, kann er das CSRF-Token und Ihre Session-ID abrufen und bösartiges Zeug transparent machen. In einem solchen Fall macht das Gewähren, Verwenden und anschließende Verwerfen eines Tokens für jede Anfrage (POST oder jede Art, die eine sensible Operation durchführt) ihre Arbeit nur ein wenig schwieriger, aber Sie sind immer noch dem Untergang geweiht.
My 2 cents ...
Was Sie für das Token verwenden? Angenommen, Sie verwenden es für etwas anderes als XSS zu verhindern, ist es schwer zu sagen, ob es für Ihr Szenario "gut" ** genug ist. – Sam
@Sam Token für XSS? – itachi
@itachi Laravel CSRF-Token wird verwendet, um Cross-Site-Anfragen (in der Regel XSS) zu verhindern.Es ist ein Token, das in der Sitzung der Website gespeichert und bei jeder Formularübermittlung gesendet wird. Daher muss ein Formular von der Website mit der Sitzung gesendet werden, um die richtige Sitzung zu erhalten. Dann wird eine Anfrage mit Cross-Site-Scripting vorgetäuscht. – Sam