web-dev-qa-db-fra.com

Quelle est la longueur d'un PHP identifiant de session?

Je crée une table dans une base de données MySQL pour enregistrer des données de session, notamment session_id. Quelle devrait être la longueur de la VARCHAR pour stocker la chaîne session_id?

37
Gustavo

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

Consultez la page session_id pour plus d’informations.

Plus vous définissez haut session.hash_bits_per_character, plus votre .__ est court. 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 hachage (en définissant Ini_set ('session.hash_function', 1), la chaîne de session suivante

Chaîne de 4 à 40 caractères

Chaîne de 5 à 32 caractères

Chaîne de 6 à 27 caractères

31
sachleen

@sachleen answer n'est pas complet.
Des informations plus détaillées sur la longueur de l'identifiant 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 un exemple de regex pour vérifier l'identifiant de session: 

preg_match('/^[a-zA-Z0-9,-]{22,40}$/', $sessionId)
29
Andron

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

Les longueurs d'ID de session plus courtes ont un risque plus élevé de collision, mais cela dépend aussi beaucoup de l'algorithme de génération d'identifiant. Compte tenu des paramètres par défaut, la longueur de l'ID de session devrait convenir à la plupart des applications. Pour les implémentations de sécurité supérieure, vous pouvez envisager de savoir comment PHP génère ses identifiants de session et vérifier s'il est sécurisé du point de vue cryptographique. Si ce n'est pas le cas, vous devriez alors lancer votre propre algorithme avec une source aléatoire de sécurité cryptographique.

4
John Woo

Par la longueur normale d'installation PHP est toujours 26 (exmp: psprdaccghmmre1oo2eg0tnpe6)

0
Gocha

Je ne sais pas où ma demande sera utilisée, puis je l'ai configurée comme suit: VARCHAR (127) Et espérons que ce sera formidable pour les utilisateurs inconnus de MySQL.

0
Abbas Uddin