CORS: Cross-Origin Resource Sharing konfigurieren

Mitglied: Frank

Frank (Level 5) - Jetzt verbinden

10.09.2020, aktualisiert 11.09.2020, 1037 Aufrufe, 1 Kommentar, 2 Danke

Hallo User,

heute hatte ich das Vergnügen mich mit CORS zu beschäftigen. Ein netter Hacker hat uns darauf hingewiesen, das wir dazu nichts konfiguriert haben.

Was ist CORS?

Das Cross-Origin Resource Sharing (CORS) ermöglicht fremden Webbrowsern oder anderen Webclients bestimmte Zugriffe auf Daten des eigenen Webservers. Normalerweise sind diese durch die Same-Origin-Policy (SOP - Gleiche-Herkunft-Richtlinie) untersagt. In der Regel geht es dabei um Web-APIs und dem Austausch von Daten.

Da wir unsere Daten mit niemanden austauschen, war mir bisher nicht klar, warum wir eine CORS Regel dazu brauchen. Wie immer kann man alles mögliche manipulieren und Hacker empfehlen, dass man die CORS so einstellen sollte, dass man selbst seine Inhalte laden darf. Wer sich auf Hackerseiten tummelt findet auch schnell das Thema: "Vulnerability : CROSS ORIGIN RESOURCE SHARING". Die Empfehlungen der Hackergemeinde lautet daher wie folgt:
Allgemeine Informationen zu CORS findet ihr unter den folgenden Links:


Wie testet man auf CORS?

Man kann im Browser die gewünschte Seite aufrufen und z.B. mit Hilfe des Menüs "Element untersuchen" die Developer Tools des Browsers starten (z.B. Firefox auf dem Mac: option+cmd+i). Unter Netzwerk Analyse findet man nach dem Klick auf die Seite den entsprechenden Header. Hier ein Beispiel:

bildschirmfoto 2020-09-10 um 18.20.04 - Klicke auf das Bild, um es zu vergrößern

Das kann je nach Browser und System natürlich unterschiedlich sein, aber letztendlich habe allen Browser eine ähnliche Ansicht.

Leichter geht es zum Beispiel per curl in der Konsole:
Tipp: Solltet ihr euch auf einem Entwicklungssystem mit ungültigen SSL-Zertifikat befinden, müsst ihr ein "-k" als curl Option hinzufügen (z.B. curl -k -I -X OPTIONS -H ....). Das unterdrückt das ungültige Zertifikat.

Bei beiden Methoden sollte im Header golgendes stehen:
Ist "Access-Control-Allow-Origin" vorhanden, wir die CORS geregelt. Dort kann natürlich auch ein "*" drin stehen. Damit erlaubt man alle Zugriffe von anderen Servern. Bei öffentlichen APIs werdet ihr das in der Regel so vorfinden.

Wie stelle ich CORS ein?

Das kann man auf unterschiedliche Weise machen: Über den Proxy, im Webserver oder per Script. Hat man z.B. einen HAProxy und will CORS allgemein einstellen, muss man lediglich ein paar Zeilen Code zur Config hinzufügen:
Nachteil - es wird alles geblockt

Das hat allerdings einen sehr großen Nachteil. Seiten, die von Werbung leben, haben dann das Problem, dass auch alle Werbesystem bzw. ihre Javascripts ab sofort geblockt werden. Voraussetzung dafür ist natürlich der Eintrag der eigenen Domäne und nicht dem "*". Das ist für uns also nicht die Lösung (sicher, aber unpraktisch).

Per HEADER einstellen

Man sollte es daher feiner einstellen. Bei uns wäre das z.B. der Login, die Seiten für Einstellungen, Nachrichten etc. Das ist bei uns der Mitglieder Bereich. Da dort sowieso keine Werbung angezeigt wird, können wir hier ansetzen.

Unter PHP kann man sehr einfach den Seiten-HEADER setzen, somit brauchen wir hier nicht in die Konfiguration des Proxys oder des Webservers eingreifen. Ein einfaches:
auf den jeweiligen Seiten genügt, um die Sicherheit durch CORS einzustellen. Danach sollte man es wieder im Browser oder per curl prüfen. Wenn man alles richtig gemacht hat, erscheint ein
und alles ist wieder gut. Das funktioniert natürlich mit allen Sprachen, die einen HEADER setzen können.

Ich hoffe ich konnte damit einigen Web-Entwicklern helfen. Das Thema ist komplex, lässt sich dann aber recht einfach umsetzen.

Wer eine API absichern will und mehrere definierte Domains erlauben möchte findet hier einen guten Ansatz:


Gruß
Frank
Mitglied: sabines
11.09.2020 um 10:40 Uhr
Moin Frank,

dazu gehört auch CSP (,wenn ich das richtig sehe, hat administrator.de gar keine).
Das habe ich mal für unsere Websites eingeführt, was bei viel externen Content nicht ganz trivial ist und immer mal wieder durchs "audit" muss. Aber Du kannst damit die Sicherheit erhöhen und Dein Ranking erhöhen, nicht dass Du's brauchst

Grundsätzliches hier:
https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP

Und eine Testmöglichkeit hier:
https://observatory.mozilla.org/

Gruss
Bitte warten ..
Heiß diskutierte Inhalte
Switche und Hubs
Kaufberatung (10G) Switche für Unternehmensnetzwerk
ipzipzapFrageSwitche und Hubs27 Kommentare

Moin, unsere Firma zieht um und am neu renovierten Standort muss/soll alles neu. Auf drei Etagen stehen Racks, in ...

Drucker und Scanner
Vorlage Endlospapier Nadeldrucker
Hanspeter82FrageDrucker und Scanner17 Kommentare

Hallo, hab die Aufagbe bekommen, eine Vorlage zuerstellen bzgl. Druck auf Endlos Papier über einen Nadeldrucker. Habe allerdings kein ...

Exchange Server
Primäre Mailadresse auf Kleinbuchstaben anpassen
JoergDdorfFrageExchange Server16 Kommentare

Hallo Alle, wir betreiben ein Exchange Hybrid (2016/365). Ich stehe vor dem Problem, dass ich die bestehenden primären Mailadresse ...

LAN, WAN, Wireless
2 Lan Dosen (Unterputz) miteinander Verbinden
gelöst RickHHFrageLAN, WAN, Wireless12 Kommentare

Moin zusammen, ich würde mir gerne auf dem Dachboden 2 Landosen in einen Raum Bauen. Ein Netzwerkkabel geht hoch, ...

Windows Userverwaltung
Active Directory Gruppen auslesen
gelöst MMaiwaldFrageWindows Userverwaltung12 Kommentare

Guten Abend, ich habe mir das Codeschnipsel geschnappt und möchte dieses noch erweitern. Dazu möchte ich noch die Beschreibung ...

Windows Netzwerk
Tool zum prüfen ob Gerät noch online ist
Ringi1970FrageWindows Netzwerk10 Kommentare

Hallo zusammen, ich suche nach einer Freeware, die mir bestimmte Geräte / Workstations (Windows Geräte, feste IP Adressen) prüft ...

Ähnliche Inhalte
Sicherheitsgrundlagen

Cross-Site-Request-Forgery (CSRF) erklärt

lastbreachAnleitungSicherheitsgrundlagen

In diesem Video erkläre ich die Schwachstelle Cross-Site-Request-Forgery anhand einer GET-Anfrage in der anfälligen Web-Anwendung DVWA (Damn Vulnerable Web ...

Sicherheitsgrundlagen

Stored Cross-Site-Scripting (XSS) Schwachstelle erklärt

lastbreachAnleitungSicherheitsgrundlagen2 Kommentare

In diesem Video erkläre ich die Schwachstelle stored Cross-Site-Scripting anhand der Gästebuch-Funktion in der unsicheren Web-Anwendung DVWA (Damn Vulnerable ...

Berechtigungs- und IdentitätsmanagementBerechtigungs- und IdentitätsmanagementWebdienste und -serverWebdienste und -serverDatenbankenDatenbankenMonitoring & SupportMonitoring & SupportHybrid CloudHybrid CloudSmall Business ITSmall Business IT