CORS $ .ajax Sitzungscookies (access-control-allow-credentials & withCredentials = true)

8

Mir ist klar, dass diese Frage ein Dutzend oder öfter gestellt wurde und jede Antwort zeigt an, dass ich es richtig mache, aber vielleicht fehlt mir etwas.

AJAX bedient CORS-Anfrage wie folgt ...

%Vor%

PHP bedient CORS-Anfragen wie ...

%Vor%

Gemäß der gesamten Dokumentation, solange der Serverseitige Header 'Access-Control-Allow-Credentials' und der clientseitige Header 'withCredentials = true' gesetzt sind, sollte die Session-Cookie-Behandlung zwischen den Domains transparent sein. Fehle ich etwas?

    
jas- 19.11.2012, 16:13
quelle

2 Antworten

4
%Vor%

verhinderte, dass der Sitzungscookie bei jeder Anfrage an den Server zurückgesendet wurde. Folgendes wurde behoben.

%Vor%

Obwohl dies zulässt, dass der Sitzungscookie vom Browser gesetzt wird, wenn Sie einen Cross-Origin-Request-Sharing-Aufruf durchführen, habe ich jetzt Probleme bezüglich des folgenden Szenarios:

Server A sendet eine Antwort an den Client Client, der CORS verwendet, stellt eine Anfrage an Server B

%Vor%

Aufgrund der MUTEX-Sperren in der PHP-Sitzungsverwaltung können die asynchrone Natur und anscheinend die Anforderung eine manuelle Ersetzung des Cookies mit einer anderen Kopfzeilenoption wie XCookie oder etwas Ähnlichem erzwingen, um die Serversitzungs- und Clientanforderungen synchronisiert zu halten .

Diese besondere Arbeit passt nicht gut zu mir, da ich glaube, dass es für Session-Hijacking- und Session-Replay-Angriffsvektoren eine einfache Fahrspur eröffnen würde.

Die Verwendung einer verschlüsselten SSL / TLS-Verbindung kann dazu beitragen, das obige Szenario zu verhindern, aber in Bezug auf die Bereitstellung von Sicherheitsmaßnahmen für den Client, glaube ich nicht, dass dies ausreichen sollte.

Wer hat irgendwelche Gedanken dazu?

    
jas- 19.11.2012, 20:46
quelle
1

In Ihrem Beispiel oben setzen Sie den Header "Access-Control-Allow-Origin" auf "http://someotherdomain.com", was der URL entspricht, die Sie von JQuery anfordern. Der Access-Control-Allow-Origin-Header sollte der Wert der Domäne sein, aus der die Anforderung stammt. Versuchen Sie als schnellen Test, den Wert dieses Headers auf '*' (ohne die Anführungszeichen) zu setzen und sehen Sie, ob es funktioniert ('*' bedeutet, dass alle Domains erlaubt sind).

    
monsur 19.11.2012 16:34
quelle

Tags und Links