2008-11-24 10 views

risposta

17

Su entrambi i domini, posizionare un'immagine o un altro elemento Web estratto dall'altro. Utilizzare l'URL per notificare all'altro dominio che l'utente X si trova sul dominio A e consentire al dominio B di associare tale ID utente a tale utente sul proprio sistema.

È un po 'complicato da eseguire correttamente, ma se ci pensate, funzionerà molto bene.

Vinko sottolinea in un commento (grazie!) Che non dovrei dare per scontato che comprendiate i rischi per la sicurezza coinvolti. Se queste informazioni sono di alcun valore per chiunque, dovresti assicurarti di usare la crittografia, l'autenticazione, ecc. Per evitare di rilasciare informazioni sensibili ed evitare vari attacchi (replay, man in the middle, ecc.). Questo non dovrebbe essere troppo oneroso dal momento che controlli entrambi i siti web e puoi selezionare una chiave segreta sicura per entrambi, poiché la comunicazione va solo tra i due server tramite questo speciale URL. Tienilo a mente però.

-Adam

+3

Dovresti aggiungere un po 'di crittografia ed evitare di ripetere gli attacchi. Puoi farlo facendo sì che A e B condividano un segreto. –

+0

Dipende. Se l'informazione è di poco o nessun valore, allora non c'è bisogno, ma se stai condividendo qualcosa di importante allora devi coinvolgere l'autenticazione, la crittografia, ecc. Queste complicano un po 'le cose, ma dal momento che controlli entrambi i sistemi non è difficile avere un segreto condiviso. –

+0

Non è difficile, ma deve essere considerato. E non dimenticare di fare quegli URI una sola volta. –

1

non lo fai, i cookie sono tenuti ad un dominio. Ci sono delle restrizioni su questo e si parla di cross-site scripting.

Ora, per un po 'di aiuto al tuo problema. Quello che puoi fare è creare uno script che aiuti a collegarli.

È possibile riscrivere globalmente tutti i collegamenti al secondo sito che richiedono le informazioni sui cookie dal primo sito.

Si salveranno tutti i cookie da site-a in un database che entrambi possono leggere, quindi aggiungendo in modo programmatico il querystring cookie-id su tutti i collegamenti a site-b, quindi si cerca quell'id del cookie e si imposta i cookie sotto il nuovo dominio.

C'è una buona libreria di astrazione del database PHP (PHP ADODB) e ha un plug-in per la condivisione della sessione che rende tutto molto più semplice.

1

Bene, se i domini sono solo diversi sottodomini, è possibile farlo in modo semplice creando un cookie .yourdomain.com. Quindi il cookie viene passato insieme a tutte le richieste su tutti i sottodomini.

Non è così semplice se si desidera condividere i cookie tra domini diversi in quanto i browser lo considerano un rischio per la sicurezza.

Qual è l'esatto esempio?

In caso di software come Google Analytics e altre immagini di tracciamento, ecc. Potresti essere obbligato a utilizzare le intestazioni P3P per far sapere al browser che non ti interessa della sicurezza quando invii i cookie. Quindi un browser che richiede l'immagine riceve un cookie come parte della risposta e ispeziona anche P3P. Se tutto è OK, salva il cookie sul disco rigido e la prossima volta che richiedi un'immagine che si trova sul tuo sito Web (ma fa parte della pagina di altri domini) il browser invierà il cookie. Ma immagino che questo non aiuta ;-)

Non ho mai usato un valore di cookie tra domini in un significato diretto di esso.

1

Non sono sicuro delle implicazioni sulla sicurezza, ma esiste un'impostazione Apache che consente di modificare il dominio di un cookie.

Ho utilizzato con successo questo metodo per i sottodomini, ma non ho mai tentato di creare domini diversi.

C'è anche un metodo per impostare la direzione delle variabili in PHP descritto a http://us.php.net/manual/en/function.session-set-cookie-params.php. La documentazione non fa riferimento alla capacità o all'impossibilità di impostare i cookie su un dominio diverso.

C'è uno Stack Overflow thread diverso su questo stesso argomento, ma non penso che sia mai stata sufficientemente risposta.

3

Se si dispone di due siti che utilizzano lo stesso dominio e desideri condividere i cookie tra di loro, impostare qualcosa di simile nel file settings.php per ogni dominio:

ini_set('session.cookie_domain', '.EXAMPLE.com'); 

essere sicuri di includere il leader '' prima del nome del dominio, o non funzionerà.

Ciò consente agli utenti di mantenere lo stato di accesso tra tutti i siti configurati per i cookie a livello di dominio.

Questo può anche avere effetti collaterali negativi, quindi non farlo a meno che non si abbia familiarità con tutti i cookie coinvolti per i siti in cui si desidera condividere i cookie.

Problemi correlati