Ich versuche, Anti-Roger-Token für die Ajax-Anfragen einer eckigen Anwendung zu implementieren.
Gibt es ein Leben lang mit dem Anti-Pilz-Token? Wenn ich die App lange Zeit in einem Webbrowser geöffnet habe, ohne sie zu berühren, sage das für einen Monat. Werden die Ajax-Anfragen aufgrund eines veralteten Tokens fehlschlagen?
Kann der Token für mehrere Anrufe wiederverwendet werden? Kann ich ein Token irgendwo auf der Seite behalten und es für alle Ajax-Anrufe abrufen?
In der Tat soll API von Drittanbietern konsumiert werden, aber was ist mit Single-Page-Schnittstellen mit AFT zu tun?
Ich bin besorgt, dass sie immer noch AFT benötigen, um CSRF-Attacken zu verhindern. Und hier ist eine gute Möglichkeit, sie in Ajax-Anfragen .
Das Antiforgery-Token wird pro Sitzung generiert und verbleibt in den Sitzungsdaten, bis es abgelaufen ist. Für neue Sitzungen wird ein neues Token generiert. Und ja, ein einzelnes Token kann mehrmals innerhalb derselben Sitzung wiederverwendet werden.
Bitte überprüfen Sie den Link, den ich hinzugefügt habe, es gibt ein Beispiel dafür, wie Token für Ajax-Anfragen erhalten werden kann.
Werden die Ajax-Anfragen aufgrund eines veralteten Tokens fehlschlagen? Ja
Kann der Token für mehrere Anrufe wiederverwendet werden? Nein
Die bessere Frage, die Sie sich stellen sollten, ist, warum Sie überhaupt Anti-Roger-Tokens mit AJAX verwenden. Wenn Sie AJAX verwenden, verwenden Sie eine API, auch wenn Sie sie nicht als solche formalisiert haben (nur eine Sammlung von Aktionen / Controllern, die für AJAX / andere Headless-Kommunikation verwendet werden). Antiforgery-Tokens funktionieren nicht gut mit APIs, weil 1) APIs dritten Zugriff erlauben und 2) selbst wenn sie nicht haben, gibt es bessere Möglichkeiten, sie zu sichern.
Wenn Sie sicherstellen möchten, dass nur Ihre Site auf Ihre "API" zugreifen kann, implementieren Sie die HTTP-Authentifizierung oder ein anderes Schema, um Ihre Anfragen an Ihre "API" zu authentifizieren. So erlauben Sie lange laufende Sitzungen, die nicht fehlschlagen.
Tags und Links asp.net-mvc angularjs asp.net xss