Durch die Antwort mit ermöglicht Access-Control-Allow-Origin: *
die angeforderte Ressource die Freigabe für jeden Ursprung. Dies bedeutet im Grunde, dass jede Site eine XHR-Anfrage an Ihre Site senden und auf die Antwort des Servers zugreifen kann, was nicht der Fall wäre, wenn Sie diese CORS-Antwort nicht implementiert hätten.
So kann jede Site im Namen ihrer Besucher eine Anfrage an Ihre Site stellen und deren Antwort verarbeiten. Wenn Sie ein Authentifizierungs- oder Autorisierungsschema implementiert haben, das auf etwas basiert, das automatisch vom Browser bereitgestellt wird (Cookies, Cookie-basierte Sitzungen usw.), werden diese auch von den von Websites Dritter ausgelösten Anforderungen verwendet.
Dies stellt in der Tat ein Sicherheitsrisiko dar, insbesondere wenn Sie die gemeinsame Nutzung von Ressourcen nicht nur für ausgewählte Ressourcen, sondern für jede Ressource zulassen. In diesem Zusammenhang sollten Sie sich ansehen, wann es sicher ist, CORS zu aktivieren. .
Access-Control-Allow-Origin: *
? Es wird kein Nogin usw. geben, sie sind für alle öffentlich?Access-Control-Allow-Origin: *
Das Hinzufügen zu jeder Ressource ist absolut sicher, es sei denn , diese Ressource enthält private Daten, die durch andere als die Standardanmeldeinformationen (Cookies, Basisauthentifizierung, TLS-Clientzertifikate) geschützt sind.ZB: Durch Cookies geschützte Daten sind sicher
Stellen Sie sich vor
https://example.com/users-private-data
, Sie können je nach Anmeldestatus des Benutzers private Daten verfügbar machen. Dieser Status verwendet ein Sitzungscookie. Das Hinzufügen zu dieser Ressource ist sicherAccess-Control-Allow-Origin: *
, da dieser Header nur dann den Zugriff auf die Antwort ermöglicht, wenn die Anforderung ohne Cookies erfolgt und Cookies erforderlich sind, um die privaten Daten abzurufen. Infolgedessen gehen keine privaten Daten verloren.Beispiel: Daten, die durch Standort / IP / internes Netzwerk geschützt sind, sind nicht sicher (leider häufig bei Intranets und Haushaltsgeräten):
Stellen Sie sich vor
https://intranet.example.com/company-private-data
, Sie legen private Unternehmensdaten offen, auf die jedoch nur zugegriffen werden kann, wenn Sie sich im WLAN-Netzwerk des Unternehmens befinden. Das Hinzufügen zu dieser Ressource ist nicht sicherAccess-Control-Allow-Origin: *
, da sie durch andere als die Standardanmeldeinformationen geschützt ist. Andernfalls könnte ein schlechtes Skript Sie als Tunnel zum Intranet verwenden.Faustregel
Stellen Sie sich vor, was ein Benutzer sehen würde, wenn er in einem Inkognito-Fenster auf die Ressource zugreifen würde. Wenn Sie mit allen zufrieden sind, die diesen Inhalt sehen (einschließlich des Quellcodes, den der Browser erhalten hat), können Sie ihn sicher hinzufügen
Access-Control-Allow-Origin: *
.quelle
Access-Control-Allow-Origin: *
erlaubt nur Anfragen ohne Cookies. Ich habe die Antwort bearbeitet, um ein wenig zu klären.AFAIK, Access-Control-Allow-Origin ist nur ein http-Header, der vom Server an den Browser gesendet wird. Wenn Sie es auf eine bestimmte Adresse beschränken (oder deaktivieren), wird Ihre Site beispielsweise für Roboter nicht sicherer. Wenn Roboter wollen, können sie den Header einfach ignorieren. Die regulären Browser (Explorer, Chrome usw.) berücksichtigen standardmäßig den Header. Aber eine Anwendung wie Postman ignoriert sie einfach.
Das Serverende überprüft nicht wirklich, woher die Anfrage stammt, wenn es die Antwort zurückgibt. Es wird nur der http-Header hinzugefügt. Es ist der Browser (das Client-Ende), der die Anforderung gesendet hat, die entscheidet, den Header für die Zugriffssteuerung zu lesen und darauf zu reagieren. Beachten Sie, dass im Fall von XHR möglicherweise eine spezielle 'OPTIONS'-Anforderung verwendet wird, um zuerst nach den Headern zu fragen.
Jeder mit kreativen Skriptfähigkeiten kann den gesamten Header leicht ignorieren, unabhängig davon, was darin festgelegt ist.
Siehe auch Mögliche Sicherheitsprobleme beim Festlegen von Access-Control-Allow-Origin .
Nun, um die Frage tatsächlich zu beantworten
Wenn jemand Sie angreifen möchte, kann er die Access-Control-Allow-Origin leicht umgehen. Wenn Sie jedoch '*' aktivieren, geben Sie dem Angreifer ein paar weitere 'Angriffsvektoren', mit denen er spielen kann, z. B. mit normalen Webbrowsern, die diesen HTTP-Header berücksichtigen.
quelle
Access-Control-Allow-Origin *
auf einer bösartigen Website, auf der Skripte zum Stehlen von Passwörtern192.168.1.1
) stellen und Ihren Router neu konfigurieren, um Angriffe zuzulassen. Es kann Ihren Router sogar direkt als DDoS-Knoten verwenden. (Die meisten Router haben Testseiten, die Pings oder einfache HTTP-Serverprüfungen ermöglichen. Diese können massenhaft missbraucht werden.)Hier sind 2 Beispiele als Kommentare, wenn ein Platzhalter wirklich problematisch ist:
- Brad
- Brad
Ich bin der Meinung, dass diese Kommentare Antworten sein sollten, weil sie das Problem anhand eines Beispiels aus dem wirklichen Leben erklären.
quelle