Ίδια cookies μεταξύ δύο domains που τρέχουν το ίδιο site

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
philos
Δημοσιεύσεις: 263
Εγγραφή: 30 Αύγ 2007 23:32

Ίδια cookies μεταξύ δύο domains που τρέχουν το ίδιο site

Δημοσίευση από philos » 25 Νοέμ 2017 01:50

Λοιπόν, ψάχνω λύσεις για το εν λόγω πρόβλημα.

Τα δεδομένα:

Έχουμε ένα vBulletin Forum που θα λειτουργεί μέσω δύο διαφορετικών domains (πχ www.x.gr και www.y.gr)

Το πρόβλημα:
Θέλω τα δύο domains να έχουν ακριβώς τα ίδια cookies. Και για το θέμα των λειτουργιών του site, αλλά και κυρίως ώστε όταν κάνεις login με τον λογαριασμό σου στο ένα, να είσαι αυτόματα συνδεδεμένος και στο άλλο.

Ξέρω ότι για λόγους ασφαλείας δεν το επιτρέπει αυτό ο browser, όμως υπάρχει καμία "πονηριά"/ απλό php script και γενικά τρόπος να το καταφέρω;

redor
Δημοσιεύσεις: 6
Εγγραφή: 22 Αύγ 2017 12:26

Re: Ίδια cookies μεταξύ δύο domains που τρέχουν το ίδιο site

Δημοσίευση από redor » 26 Νοέμ 2017 13:12

Δεν το διευκρινίζεις αλλά υποθέτω ότι και τα δύο “sites” εξυπηρετούνται στον ίδιο server με ίδιο φάκελο temp που αποθηκεύονται τα αρχεία session. Υπάρχουν πάρα πολλοί τρόποι , και μερικοί πιθανώς να είναι καλύτεροι από αυτόν που θα σου περιγράψω και είχα κάνει πριν μερικά χρόνια.
Αν όμως δεν σε ενδιαφέρουν πραγματικά τα δεδομένα του session αλλά μόνο το Single Sign On έχει νόημα να το ψάξεις προς αυτή την κατεύθυνση.

Όταν μπαίνει για πρώτη φορά κάποιος στο site x.gr και αποδίδεται για πρώτη φορά session id τότε γράφεις σε έναν πίνακα σε μια βάση που έχουν πρόσβαση και τα δύο apps το session id και έναν αλφαριθμητικό κωδικό επαλήθευσης (υπάρχουν πολλές μέθοδοι παραγωγής κωδικού επαλήθευσης αλλά για να μην το μπλέξω αρκεί να είναι τυχαίος και μεγάλος). Με κάποιο τρόπο έτσι και αλλιώς (διαφορετικό ανάλογα την αρχιτεκτονική σου) υπάρχει κάποια σύνδεση με το view άρα όταν κάνεις το άνωθεν τότε βγάζεις και μια εικόνα κενή (π.χ. 1 x 1 png transparent) στον site y.gr η οποία θα σερβίρεται μέσω PHP. Είτε με παραμέτρους GET (π.χ. y.gr/Image/SetSessionId.png?confirmationId=asdf8123svsdfwerdsdfcxsdw183sdf) είτε με url path (π.χ. y.gr/Image/SetSessionId/asdf8123svsdfwerdsdfcxsdw183sdf.png αυτό έκανα εγώ) σαν source της εικόνας , παίρνεις το confirmation id που έβαλες στον πίνακα , και από εκεί το session id . Μετά διαγράφεις αυτή την εγγραφή απο τον πίνακα. Αφού στο y.gr έχεις το session id του x.gr απλά κάνεις set το session id.

Το ίδιο ισχύει και απο το y.gr στο x.gr αντίστροφα

Χρειάζεται προσοχή αν έχεις serialized PHP αντικείμενα στο session , ότι οι ίδιες κλάσεις τους βρίσκονται και στα δύο sites .

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες