Cross-Origin Resource Sharing (CORS)-Konfiguration
Cross-Origin Resource Sharing (CORS) wird mittels Access-Control-Allow-Origin
und verwandter Header gehandhabt. Access-Control-Allow-Origin
definiert die nicht selben Ursprünge, die berechtigt sind, Anfragen an Seiten auf Ihrer Domain zu stellen (d.h. über XMLHttpRequest
oder fetch()
).
Problem
Standardmäßig blockiert die Same-Origin-Policy von Skripten initiierte Cross-Origin-HTTP-Anfragen. Es gibt mehrere Anwendungsfälle, die den Zugriff von Skripten über Ursprungsgrenzen hinweg erfordern; zum Beispiel Content Delivery Networks (CDNs), die das Hosting für JavaScript/CSS-Bibliotheken und öffentliche API-Endpunkte bereitstellen. Jedoch stellt der Zugriff über Ursprungsgrenzen ein erhebliches Sicherheitsrisiko dar und muss sorgfältig kontrolliert werden.
Lösung
Verwenden Sie Access-Control-Allow-Origin
, um die nicht selben Ursprünge zu definieren, die berechtigt sind, Anfragen an Seiten auf Ihrer Domain zu stellen.
Falls vorhanden, sollte Access-Control-Allow-Origin
die minimale Anzahl an Ursprüngen und Ressourcen spezifizieren, die für die Funktion Ihrer Seite notwendig sind. Zum Beispiel, wenn Ihr Server sowohl eine Webseite als auch eine API bereitstellt, die für Remote-XMLHttpRequest
-Zugriffe bestimmt ist, sollten nur die API-Ressourcen den Access-Control-Allow-Origin
-Header zurückgeben.
Wenn Access-Control-Allow-Origin
nicht richtig eingestellt ist, können unautorisierte Ursprünge die Inhalte jeder Seite auf Ihrer Seite lesen. Dies kann besonders gefährlich sein, wenn diese Seiten in der Lage sind, Anmeldedaten zu senden, was Ihre Seite potentiell CSRF-Angriffen aussetzen könnte.
Falls ein beglaubigter Zugriff von bestimmten Ursprüngen erforderlich ist, stellen Sie sicher, dass Access-Control-Allow-Origin
nur auf diese Ursprünge gesetzt ist und nicht den Origin
-Header widerspiegelt. Falls ein öffentlicher nicht beglaubigter 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 Webseite, 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 für Entwickler von W3C (2016)