45 votes

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

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

40voto

sachleen Points 17288

Dépend de fonction de hachage de la session y session.hash_bits_par_caractère .

Consultez le identifiant de la session pour plus d'informations.

Plus la valeur de session.hash_bits_per_character est élevée, plus la longueur de votre session_id deviendra plus court en utilisant plus de bits par caractère. Les valeurs valeurs possibles sont 4, 5 ou 6.

Lorsque l'on utilise sha-1 pour le hachage (en définissant ini_set('session.hash_function', 1), les longueurs suivantes des chaînes de suivantes sont produites par les trois paramètres de session.hash_bits_par_caractère de session :

Chaîne de 4 à 40 caractères

Chaîne de 5 à 32 caractères

Chaîne de 6 à 27 caractères

35voto

Andron Points 1903

@sachleen la réponse n'est pas complète.
Des informations plus détaillées sur la longueur de l'identifiant de session sont décrites aquí .

Resumen:

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 la session :

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

3voto

John Woo Points 132738

Il dépend de ces paramètres de configuration : fonction de hachage de la session y session.hash_bits_par_caractère

Les ID de session plus courts ont plus de chances d'entrer en collision, mais cela dépend aussi beaucoup de l'algorithme de génération des ID. Compte tenu des paramètres par défaut, la longueur de l'ID de session devrait être appropriée pour la plupart des applications. Pour des implémentations plus sécurisées, vous pouvez envisager de regarder comment PHP génère ses identifiants de session et vérifier si c'est cryptographiquement sécurisé. Si ce n'est pas le cas, vous devriez utiliser votre propre algorithme avec une source d'aléatoire cryptographiquement sécurisée.

1voto

Gocha Points 32

Par l'installation normale de php la longueur est toujours 26 (exmp : psprdaccghmmre1oo2eg0tnpe6)

0voto

Abbas Uddin Points 61

Je ne sais pas à quoi servira mon application, alors je l'ai configurée comme telle : VARCHAR(127) et j'espère qu'elle sera utile aux utilisateurs inconnus de MySQL.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X