Cross-Origin Resource Sharing (CORS) Konfiguration
Cross-Origin Resource Sharing (CORS) wird mit Hilfe der Header Access-Control-Allow-Origin
und verwandter Header gehandhabt. Access-Control-Allow-Origin
definiert die nicht gleichartigen Ursprünge, die Anfragen an Seiten auf Ihrer Domain stellen dürfen (z. B. über XMLHttpRequest
oder fetch()
).
Problem
Standardmäßig blockiert die same-origin policy von Skripten initiierte, ursprungsübergreifende HTTP-Anfragen. Es gibt mehrere Anwendungsfälle, die den Zugriff auf ursprungsübergreifende Skripte erfordern; zum Beispiel Content Delivery Networks (CDNs), die Hosting für JavaScript/CSS-Bibliotheken und öffentliche API-Endpunkte bereitstellen. Ursprungsübergreifender Zugriff stellt jedoch ein erhebliches Sicherheitsrisiko dar und muss sorgfältig kontrolliert werden.
Lösung
Verwenden Sie Access-Control-Allow-Origin
, um die nicht gleichartigen Ursprünge zu definieren, die Anfragen an Seiten auf Ihrer Domain stellen dürfen.
Falls vorhanden, sollte Access-Control-Allow-Origin
die kleinstmögliche Anzahl von Ursprüngen und Ressourcen spezifizieren, damit Ihre Website funktioniert. Wenn Ihr Server beispielsweise sowohl eine Website als auch eine API bereitstellt, die für den Remote-XMLHttpRequest
-Zugang vorgesehen ist, sollten nur die API-Ressourcen den Header Access-Control-Allow-Origin
zurückgeben.
Ein Versäumnis, Access-Control-Allow-Origin
richtig zu setzen, ermöglicht unautorisierten Ursprüngen, die Inhalte jeder Seite auf Ihrer Website zu lesen. Dies kann besonders gefährlich sein, wenn diese Sites in der Lage sind, Anmeldedaten zu senden, was Ihre Seite potenziell CSRF-Angriffen aussetzen könnte.
Wenn der Zugriff auf Anmeldedaten von bestimmten Ursprüngen erforderlich ist, stellen Sie sicher, dass Access-Control-Allow-Origin
nur auf diese Ursprünge gesetzt ist, anstatt den Header Origin
widerzuspiegeln. Wenn ungeprüfter öffentlicher Zugang erforderlich ist, setzen Sie Access-Control-Allow-Origin
auf *
und lassen Sie den Header Access-Control-Allow-Credentials
weg. Andernfalls lassen Sie beide Header weg.
Beispiele
Erlauben Sie jeder Site, die Inhalte einer JavaScript-Bibliothek zu lesen:
Access-Control-Allow-Origin: *
Hinweis: Diese Einstellung ist erforderlich, damit die Subresource integrity 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 for Developers von W3C (2016)