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?
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
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)
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.
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.
le php longueur d'installation est toujours 26 (exmp: psprdaccghmmre1oo2eg0tnpe6)