Comment unique, c'est le php id de session? J'ai eu l'impression de diverses choses que j'ai lu que je ne devrait pas s'appuyer sur les deux utilisateurs ne jamais avoir le même id de session. N'est-il pas un GUID?
Réponses
Trop de publicités?Il n'est pas unique à la livraison. Dans la configuration par défaut c'est le résultat de hachage différentes choses, y compris le résultat de gettimeofday (ce qui n'est pas terriblement unique), mais si vous êtes inquiet, vous devez le configurer pour en tirer de l'entropie à partir de /dev/urandom, comme
ini_set("session.entropy_file", "/dev/urandom");
ini_set("session.entropy_length", "512");
recherche pour "php_session_create_id" dans le code pour l'algorithme réel qu'ils utilisent.
Edité pour ajouter: Il y a un DFA générateur de nombres aléatoires ensemencées par le pid, mélangé avec le temps dans usecs. Ce n'est pas un cabinet condition d'unicité en particulier dans une perspective de sécurité. L'utilisation de l'entropie config ci-dessus.
Mise à jour:
Depuis PHP 5.4.0 session.entropy_file par défaut est /dev/urandom ou /dev/arandom si elle est disponible. En PHP 5.3.0 cette directive est de gauche vide par défaut. Manuel PHP
Session_id peut en effet être reproduit, mais la probabilité est très faible. Si vous avez un site avec un bon trafic, il peut se produit une fois que vous site web de la vie, et juste agacer plus d'un utilisateur pour une session.
Ce n'est pas la peine de soins, sauf si vous vous attendez à construire un très haut trafic de site web ou d'un service pour l'industrie bancaire.
Vous pouvez installer une alternative de hachage fonction de génération si vous souhaitez personnaliser la façon dont l'ID est généré (c'est une 128 bits nombre généré via MD5 par défaut). Voir http://www.php.net/manual/en/session.configuration.php#ini.session.hash-function
Pour plus d'informations sur les sessions PHP, essayez cet excellent article http://shiflett.org/articles/the-truth-about-sessions ce qui a également des liens vers d'autres articles à propos de fixation de session et de détourner.
Taille de session_id
Supposons que seesion_id est distribuée de manière uniforme et a taille=128 bits. Supposons que chaque personne sur la planète connecte une fois par jour avec une persistante d'une nouvelle session pour 1000 ans.
num_sesion_ids = 1000*365.25 *7*10**9 < 2**36
collission_prob < 1 - (1-1/2**82)**(2**36) ≈ 1 - e**-(1/2**46)
≈ 1/2**46
Donc, la probabilité d'un ou de plusieurs de collision est inférieur à 70 mille milliards. D'où la 128 bits de taille de la session_id doit être assez grande. Comme mentionné dans d'autres commentaires, la session_manager peut également vérifier que les nouveaux session_id n'existe pas déjà.
L'aléatoire
Donc la grande question je pense est de savoir si le session_id:s sont générés avec un bon pseudo aléatoire. Sur que vous ne pouvez jamais être certain, mais je vous conseille d'utiliser un bien connu et souvent utilisé en solution standard à cet effet (comme vous l'avez sans doute déjà fait).
Même si les collisions sont évitées en raison de la vérification, de l'aléatoire et de la taille de session_id est important, pour que les pirates ne peuvent pas, de toute façon ne qualifiée de deviner et de trouver active session_id:s avec grande probabilité.