Comment générer un IDENTIFIANT unique de session en php
Sur nos sites web, nous voulons qu'il soit possible de partager les sessions accros de multiples domaines. Tous ces sites sont sur le même serveur, mais certains d'entre eux ont une adresse IP différente.
La solution que j'ai trouvé était de définir l'ID de session en moi-même:
<?php
session_id($someUniqueHash);
?>
Et cela fonctionne, si je fais le hachage comme md5('test'). Sur un autre domaine sur te même serveur, nous avons de nouveau la session.
Le problème, c'est la génération de l'ID. Je vois des solutions sur internet avec microtime etc, mais quand j'utilise cette approche, je ne peux pas prédire l'ID de session dans l'autre domaine /page PHP.
Quelqu'un a une idée? Ou ne devrait-on pas mettre en œuvre? Il existe d'autres options de partage de session sur plusieurs domaines? (PAS de sous-domaines!)
La requête param n'est pas préférée, c'est l'insécurité et non pas l'url conviviale. Pour autant que je sais que vous n'autoriser les cookies accros du même domaine (sous-domaines) pas multidomains.
C'est juste un cookie vous passer. Et vous pouvez faire des cookies pour les domaines tiers, tiers-parti de cookies. Vous pourriez aussi avoir besoin de vérifier le côté juridique pour ce faire (à côté de l'aspect technique qui est résolu). Btw tous les détails techniques que vous pourriez apprendre sur: HTTP État d'un Mécanisme de Gestion RFC6265
Tnx, Hakre. Ne savait pas encore. Je vais enquêter sur vos options et de répondre ici.
OriginalL'auteur Kees Schepers | 2012-06-22
Vous devez vous connecter pour publier un commentaire.
J'ai réalisé ce système à l'aide d'un OAuth type de flux, mais nous avons remplacé le Consommateur avec l'Utilisateur.
De sorte que chaque domaine aurait authentifié Access_Token dans sa propre session.
Ensuite, vous devez utiliser que Access_Token pour obtenir des informations sur l'utilisateur à partir d'une api.
J'ai aussi résolu le problème de la séance problème de l'aide session_set_save_handler et de stocker les sessions dans une base de données de la table... Cette table aura l'Access_Token aussi, qui rend vraiment facile de trouver de la session avec un DB Requête.
Espère que cette aide avec des idées.
OriginalL'auteur Lex
Hmm c'est une question difficile.
Comme tout le monde le sait PHP utilise des cookies pour comprendre session_ids lorsqu'un utilisateur est de retour sur votre site et il n'y a pas de chemin de croix domaine des cookies: Croix domaine des cookies (edit: il y est, mais la méthode est complexe).
C'est probablement la raison pour laquelle je n'ai jamais vu un site en œuvre de ce même s'ils ont des domaines différents.
Vous pouvez, via un lien sur votre page d'un domaine transmettre l'id de session pour le prochain domaine via $_GET ou $_POST. Cela ne fonctionne pas si l'utilisateur entre directement dans votre autre site.
La que partiellement (pas fiable) méthode je peux venir avec est de garder une trace des utilisateurs d'ordinateur dans la base de données et l'utiliser pour comprendre ce que la session est attaché. Afin de vous abriter les ordinateurs adresse IP et peut-être quelques autres détails, et qui est adossé à une session.
La propriété intellectuelle et d'autres détails d'un ordinateur personnel pourrait ouvrir une session dans l'autre domaine.
Je dois corriger ma réponse croix domaine des cookies sont possibles, mais solide comme mentined dans ce post, mais oui croix domaine des séances sont vraiment pas fiable...
OriginalL'auteur Sammaye
Peut-être que ce n'est pas une option pour vous, mais vous pouvez essayer ce.
Sur votre site principal, vous générer l'id de session par normal et à perpétuer la session à un autre domaine que vous pourriez inclure des balises d'image avec l'id de session dans l'URL. En réponse, l'autre du domaine sera de définir un cookie, de sorte que lorsque le visiteur arrive là, il le sait déjà, l'id de session.
Se sent un peu smarty pants solution, mais il devrait fonctionner si vous n'avez pas trop d'autres domaines 🙂 de tiers les cookies peuvent être désactivés séparément dans les navigateurs btw, quelque chose à considérer.
Oh btw, session adoption (à l'acceptation d'une id via les paramètres de la requête et de la définition d'un cookie) est délicate choses et doivent être protégés, c'est à dire de la session doit déjà exister avant de cookie.
OriginalL'auteur Ja͢ck
Configurer chaque site individuellement:
De faire de multiples sites de partage de sessions, les laisser utiliser le même
$cfgsession['file']
.Inclure une session à partir d'un site dans une demande à un autre domaine (peut-être que recommandé par Jack), et aussi longtemps que vous n'avez pas attraper de faire leur demande dans un autre navigateur ou que ce soit (s'il vous plaît ne quelque chose pour inhiber le détournement de session), leur permettent de spécifier une session avec $_GET. Par exemple:
Et puis rouler votre propre session_ fonctions:
OriginalL'auteur dogglebones
Si ce sont des sessions de connexion, pensez à utiliser une authentification unique (SSO) de la solution, tels que ceux qui mettent en œuvre la norme SAML.
OriginalL'auteur Derrick Miller