Teilen Sie ein Cookie zwischen zwei Websites

9

Ich habe eine Website (A) erstellt, die sich bei einem separaten Web-Service anmeldet und Kundendaten abruft.

Die Organisation, die (A) besitzt, hat auch eine Website (B), die ein Webformular hat. Sie möchten, dass ein eingeloggter Kunde auf (A) in der Lage ist, auf (B) zu klicken und ein vorgefülltes Formular mit ihren Details zu sehen.

Dies bedeutet, dass (A) seine Kunden-ID in einen Cookie schreiben muss, der (B) lesen kann, und (B) dann die Daten vom Web-Service anfordern und das Formular vorab ausfüllen kann.

Dies wirft zwei Fragen auf:

  1. Kann die Website (B) den Cookie für die Website (A) lesen?

  2. Wenn ja, um jemanden daran zu hindern, einen Cookie zu bearbeiten und die Daten anderer Personen im Formular zu sehen, müsste ich etwas wie den Cookie auf (A) verschlüsseln und ihn dann in (B) entschlüsseln lassen Vorschläge in dieser Richtung?

Ich kann die vorhandene Anmeldung nicht in OAuth oder etwas ändern, da der Webdienst von mehreren anderen Websites verwendet wird. Dies kann sich nicht ändern.

    
Sean 11.09.2012, 13:10
quelle

6 Antworten

12

Nein. Website B kann keinen Cookie von Website A lesen.

Am einfachsten ist es, Anmelde- / Anmeldedaten von Website A an Website B zu übergeben und Website B ein separates Cookie zu setzen. Nachdem Sie sich beispielsweise in Website A eingeloggt haben, können Sie sie mit einem verschlüsselten Querystring schnell auf die Website B umleiten lassen. Website B könnte dann die Informationen lesen, einen eigenen Cookie setzen und den Benutzer zurück zur Site A umleiten.

Es ist chaotisch, aber möglich.

    
Chris Van Opstal 11.09.2012, 13:15
quelle
9

Sie haben erwähnt, dass die gleiche Firma beide Standorte besitzt. Wie Sie vermutet haben, wenn die Websites die gleiche Domain wie www.mycompany.com und store.mycompany.com haben, können sie Cookies teilen. Der HTTP-Antwortheader würde etwa so aussehen:

%Vor%

Da der Client direkten Zugriff auf diese Daten hat, sollten Sie auch eine Signatur hinzufügen, damit Manipulationen erkannt werden. Normalerweise ist das Ganze verschlüsselt und in einem "Token" signiert, und das wird als Cookie gesetzt. Aber technisch ist nur die Unterschrift erforderlich.

    
Ted Bigham 12.09.2012 18:48
quelle
3

Wenn in Ihrem Fall alle Benutzer Browser mit HTML5-Unterstützung verwenden, können Sie die window.postMessage -Methode verwenden, die addEventListener auf der einen und postMessage auf der anderen Seite erlaubt. Hier ist ein schöner Artikel / Beispiel: Ссылка .

Dann sind die Schritte einfach:

  1. fügen Sie der Site A einen versteckten Iframe zu Site B
  2. hinzu
  3. Senden Sie Bs Cookie mithilfe von window.postMessage
  4. an A
  5. speichert den erhaltenen Cookie in A's Cookie
Alexander 08.04.2014 11:08
quelle
2

Auf Cookies kann nur eine einzige Domäne zugreifen, auf die sie festgelegt sind.

Ich glaube, wenn Sie zwei Subdomains in derselben Domain verwenden, ist es möglich, die Cookies zu teilen. Der Browser sendet jedoch keine Cookies, die auf einer Domain gesetzt sind, an andere.

Bearbeiten: Sie möchten auch vermeiden, große Datenmengen in einem Cookie zu speichern. Gibt es vielleicht die Chance, dass Sie eine API erstellen könnten, die B mit Javascript abfragen könnte?

    
Samuel Parkinson 11.09.2012 13:20
quelle
1

Mögliche Umgehung: Sie können einen Inlineframe auf der sekundären Site verwenden, um Inhalt von der primären Site anzuzeigen (wobei das vollständige Fenster angezeigt wird):

%Vor%     
user8792399 17.10.2017 20:48
quelle
0

Es gibt Open-Source-Tools im Internet, die das können, aber das ist gegen die ganze Idee hinter der Cookie-Philosophie. Cookies sind nur für den Zugriff auf eine Domain vorgesehen. Sie können diese Domäne jedoch verspotten und in den Browser "hacken". Es wird nicht empfohlen und einige Browser haben strengere Sicherheit und erlauben das nicht.

Ich schlage vor, Sie erstellen einen Web-Service in der Website A und geben Lesezugriff auf B, um es zu lesen.

    
Frank Goortani 11.09.2012 13:19
quelle

Tags und Links