recorrer - strpos php
¿Cuál es la longitud de una cadena de identificación de sesión de PHP? (5)
Estoy haciendo una tabla en una base de datos MySQL para guardar algunos datos de la sesión, incluyendo session_id
. ¿Cuál debería ser la longitud de VARCHAR
para almacenar la cadena session_id
?
Depende de session.hash_function y session.hash_bits_per_character .
Consulte la página session_id para más información.
Cuanto más alto establezca session.hash_bits_per_character, más corto será su session_id utilizando más bits por carácter. Los valores posibles son 4, 5 o 6.
Cuando se utiliza sha-1 para hash (al establecer ini_set (''session.hash_function'', 1), las siguientes longitudes de cadena de sesión son producidas por las tres configuraciones de session.hash_bits_per_character:
4 - cadena de 40 caracteres
5 - cadena de 32 caracteres
6 - cadena de 27 caracteres
Depende de estas configuraciones: session.hash_function y session.hash_bits_per_character
Las longitudes de ID de sesión más cortas tienen una mayor probabilidad de colisión, pero esto también depende mucho del algoritmo de generación de ID. Dada la configuración predeterminada, la longitud de la ID de la sesión debe ser adecuada para la mayoría de las aplicaciones. Para implementaciones de mayor seguridad, puede considerar investigar cómo PHP genera sus ID de sesión y verificar si es criptográficamente segura. Si no es así, entonces debes rodar tu propio algoritmo con una fuente de aleatoriedad criptográficamente segura.
La respuesta de @sachleen no está completa.
Aquí se describe información más detallada sobre la duración de la identificación de la sesión.
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
Y muestra regex para verificar la identificación de la sesión:
preg_match(''/^[a-zA-Z0-9,-]{22,40}$/'', $sessionId)
No sé dónde se usará mi aplicación, luego lo configuré como: VARCHAR (127) y espero que sea genial para usuarios de MySQL desconocidos.
Por la longitud de instalación php regular siempre es 26 (exmp: psprdaccghmmre1oo2eg0tnpe6)