Nachdem ich über CORS gelesen habe, verstehe ich nicht, wie es die Sicherheit verbessert.
CORS verbessert die Sicherheit nicht. CORS bietet Servern einen Mechanismus, mit dem sie Browsern mitteilen können, wie fremde Domänen auf sie zugreifen sollen, und dies auf eine Weise, die mit dem vor CORS vorhandenen Browsersicherheitsmodell (nämlich der Richtlinie für denselben Ursprung ) übereinstimmt .
Die Same Origin Policy und CORS haben jedoch einen begrenzten Geltungsbereich. Insbesondere hat die CORS-Spezifikation selbst keinen Mechanismus zum Ablehnen von Anforderungen. Mithilfe von Headern kann der Browser angewiesen werden, dass eine Seite einer fremden Domain keine Antwort liest. Bei Preflight-Anfragen kann der Browser aufgefordert werden, bestimmte Anfragen von einer fremden Domain nicht zu senden. CORS gibt jedoch keine Möglichkeit für den Server an, eine tatsächliche Anforderung abzulehnen (dh nicht auszuführen).
Nehmen wir ein Beispiel. Ein Benutzer ist A
über ein Cookie auf der Website angemeldet . Der Benutzer lädt eine schädliche Site M
, die versucht, ein Formular zu senden, das eine POST
an A
. Was wird passieren? Nun, mit oder ohne CORS und mit oder ohne M
eine erlaubte Domain, sendet der Browser die Anfrage A
mit dem Autorisierungscookie des Benutzers an und der Server führt den böswilligen Vorgang aus, POST
als ob der Benutzer ihn initiiert hätte.
Dieser Angriff wird als Cross-Site Request Forgery bezeichnet , und CORS selbst unternimmt nichts, um ihn zu mildern. Aus diesem Grund ist der CSRF-Schutz so wichtig, wenn Sie zulassen, dass Anforderungen Daten im Namen von Benutzern ändern.
Jetzt kann die Verwendung des Origin
Headers ein wichtiger Bestandteil Ihres CSRF-Schutzes sein. In der Tat ist die Überprüfung Teil der aktuellen Empfehlung für eine mehrstufige CSRF-Verteidigung . Diese Verwendung des Origin
Headers fällt jedoch nicht in die CORS-Spezifikation.
Insgesamt ist CORS eine nützliche Spezifikation für die Erweiterung des vorhandenen Sicherheitsmodells der Same Origin Policy auf andere akzeptierte Domänen. Es erhöht die Sicherheit nicht, und Websites benötigen dieselben Verteidigungsmechanismen wie vor CORS.