Quelle est la longueur d'une chaîne D'id de session PHP?

je crée une table dans une base de données MySQL pour enregistrer quelques données de session, y compris session_id. Quelle devrait être la longueur de l' VARCHAR pour stocker l' session_id chaîne de caractères?

36
demandé sur user2428118 2012-09-03 04:59:11

5 réponses

Dépend de session.hash_function et session.hash_bits_per_character.

découvrez le session_id page pour plus d'information.

plus la session est haute.hash_bits_per_character le plus court votre session_id deviendra en utilisant plus de bits par caractère. Le possible les valeurs sont 4, 5, ou 6.

lors de l'utilisation de sha-1 pour le la fonction ini_set('session.hash_function", 1) le suivant session de la chaîne les longueurs sont produites par les trois sessions.hash_bits_per_character paramètres:

4 - 40 chaîne de caractères

5 - 32 chaîne de caractères

6 - 27 chaîne de caractères

31
répondu sachleen 2012-09-03 01:02:36

Des informations plus détaillées sur la longueur de l'id de session sont décrites ici.

Résumé:

128-bit digest (MD5)  
4 bits/char: 32 char SID    
5 bits/char: 26 char SID    
6 bits/char: 22 char SID

160-bit digest (SHA-1)
4 bits/char: 40 char SID    
5 bits/char: 32 char SID    
6 bits/char: 27 char SID

et exemple de regex pour vérifier l'id de session:

preg_match('/^[a-zA-Z0-9,-]{22,40}$/', $sessionId)
27
répondu Andron 2014-03-14 09:26:19

Cela dépend de ces paramètres de configuration: session.hash_function et session.hash_bits_per_character

les longueurs D'ID de session plus courtes ont le plus grand risque de collision, mais cela dépend aussi beaucoup de l'algorithme de génération D'ID. Étant donné les paramètres par défaut, la longueur de l'ID de session devrait être appropriée pour la plupart des applications. Pour les implémentations à plus haute sécurité, Vous pouvez envisager de regarder comment PHP génère ses ID de session et vérifie s'il est cryptographiquement sécurisé. Si ce n'est pas le cas, alors vous devriez lancer votre propre algorithme avec une source cryptographique sécurisée d'aléatoire.

4
répondu John Woo 2012-09-03 01:01:51

Je ne sais pas où mon application sera utilisée alors je l'installe comme: VARCHAR (127) et j'espère que ce sera génial pour les utilisateurs MySQL inconnus.

0
répondu Abbas Uddin 2014-07-10 12:12:48

le php longueur d'installation est toujours 26 (exmp: psprdaccghmmre1oo2eg0tnpe6)

0
répondu Gocha 2014-09-18 06:59:23