Ich entwickle eine JSON / REST-Web-API, für die ich speziell möchte, dass Websites von Drittanbietern meinen Dienst über AJAX aufrufen können. Daher sendet mein Dienst den berühmten CORS-Header:
Access-Control-Allow-Origin: *
Dadurch können Websites von Drittanbietern meinen Dienst über AJAX aufrufen. Alles in Ordnung soweit.
Ein Unterabschnitt meiner Web-API ist jedoch nicht öffentlich und erfordert eine Authentifizierung (ziemlich normales Zeug mit OAuth und einem access_token-Cookie). Ist es sicher, CORS auch auf diesem Teil meiner Website zu aktivieren?
Einerseits wäre es cool, wenn Websites von Drittanbietern Ajax-Clients haben könnten, die auch mit diesem Teil meines Dienstes interagieren. Der Grund dafür, dass es in erster Linie dieselbe Ursprungspolitik gibt, ist jedoch, dass dies riskant sein kann. Sie möchten nicht, dass eine Website, die Sie anschließend besuchen, auf Ihre privaten Inhalte zugreifen kann.
Das Szenario, vor dem ich Angst habe, ist, dass sich ein Benutzer in meiner Web-API anmeldet, entweder auf der Website oder über eine Website, der er vertraut, und vergisst, sich abzumelden. Ermöglicht dies jeder anderen Website, die er später besucht, über die vorhandene Sitzung auf seine privaten Inhalte zuzugreifen?
Also meine Fragen:
- Ist es jemals sicher, CORS für nicht öffentliche Inhalte zu aktivieren?
- Wenn ein CORS-fähiger Server ein session_token über ein Cookie setzt, wird dieses Cookie unter der Domäne des CORS-Servers oder des Hauptwebseiten-Servers gespeichert?