Cross-Origin Resource Sharing (CORS)-Konfiguration
Cross-Origin Resource Sharing (CORS) wird mit den Headern Access-Control-Allow-Origin
und verwandten Headern behandelt. Access-Control-Allow-Origin
definiert die nicht-identischen Ursprünge, die Anfragen an Seiten Ihrer Domain stellen dürfen (d.h. über XMLHttpRequest
oder fetch()
).
Problem
Standardmäßig blockiert die gleichen Ursprungsrichtlinie cross-origin HTTP-Anfragen, die durch Skripte initiiert werden. Es gibt mehrere Anwendungsfälle, die den Zugriff auf Skripte von verschiedenen Ursprüngen erfordern; zum Beispiel Content Delivery Networks (CDNs), die Hosting für JavaScript/CSS-Bibliotheken und öffentliche API-Endpunkte bereitstellen. Dennoch stellt der Zugriff von verschiedenen Ursprüngen ein großes Sicherheitsrisiko dar und muss sorgfältig kontrolliert werden.
Lösung
Verwenden Sie Access-Control-Allow-Origin
, um die nicht-identischen Ursprünge zu definieren, die Anfragen an Seiten Ihrer Domain stellen dürfen.
Wenn vorhanden, sollte Access-Control-Allow-Origin
die kleinstmögliche Anzahl von Ursprüngen und Ressourcen festlegen, damit Ihre Website funktioniert. Zum Beispiel, wenn Ihr Server sowohl eine Website als auch eine API bereitstellt, die für Remote-XMLHttpRequest
-Zugriffe gedacht ist, sollten nur die API-Ressourcen den Access-Control-Allow-Origin
-Header zurückgeben.
Das Versäumnis, Access-Control-Allow-Origin
angemessen festzulegen, erlaubt es nicht autorisierten Ursprüngen, die Inhalte einer beliebigen Seite auf Ihrer Website zu lesen. Dies kann besonders gefährlich sein, wenn diese Seiten in der Lage sind, Anmeldedaten zu senden, was Ihre Website potenziell für CSRF-Angriffe anfällig macht.
Wenn der Zugriff mit Anmeldedaten von bestimmten Ursprüngen erforderlich ist, stellen Sie sicher, dass Access-Control-Allow-Origin
nur auf diese Ursprünge gesetzt wird und nicht den Origin
-Header widerspiegelt. Wenn öffentlicher, nicht vorberechtigter Zugriff erforderlich ist, setzen Sie Access-Control-Allow-Origin
auf *
und lassen Sie den Access-Control-Allow-Credentials
-Header weg. Andernfalls lassen Sie beide Header weg.
Beispiele
Erlauben Sie jeder Seite, den Inhalt einer JavaScript-Bibliothek zu lesen:
Access-Control-Allow-Origin: *
Hinweis: Diese Einstellung ist erforderlich, damit die Subresource-Integrität funktioniert.
Erlauben Sie https://random-dashboard.example.org
, die zurückgegebenen Ergebnisse einer API zu lesen:
Access-Control-Allow-Origin: https://random-dashboard.example.org
Siehe auch
Access-Control-Allow-Origin
Access-Control-Allow-Credentials
Access-Control-Allow-Headers
Access-Control-Allow-Methods
Access-Control-Expose-Headers
Access-Control-Max-Age
Access-Control-Request-Headers
Access-Control-Request-Method
Origin
- Cross-Origin Resource Sharing (CORS)
- CORS für Entwickler von W3C (2016)