it-roy-ru.com

Какова длина PHP строка идентификатора сессии?

Я делаю таблицу в базе данных MySQL, чтобы сохранить некоторые данные сеанса, включая session_id. Какой должна быть длина VARCHAR для хранения строки session_id?

37
Gustavo

Зависит от session.hash_function и session.hash_bits_per_character .

Проверьте session_id страницу для получения дополнительной информации.

Чем выше вы установили session.hash_bits_per_character, тем короче ваш session_id станет с использованием большего количества битов на символ. Возможное значения 4, 5 или 6.

При использовании sha-1 для хеширования (путем установки Ini_set ('session.hash_function', 1) следующая строка сеанса Длины получается тремя настройками session.hash_bits_per_character :

4 - 40 символьная строка

5 - 32 символьная строка

6 - 27 символьная строка

31
sachleen

Ответ @sachleen не полный.
Более подробная информация о длине идентификатора сессии описана здесь .

Резюме: 

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

И пример регулярного выражения для проверки идентификатора сессии: 

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

Это зависит от следующих параметров конфигурации: session.hash_function и session.hash_bits_per_character

Более короткие длины идентификатора сеанса имеют более высокую вероятность столкновения, но это также во многом зависит от алгоритма генерации идентификатора. Учитывая настройки по умолчанию, длина идентификатора сеанса должна соответствовать большинству приложений. Для реализаций с более высокой степенью безопасности вы можете рассмотреть, как PHP генерирует свои идентификаторы сеансов, и проверить, является ли он криптографически безопасным. Если это не так, то вы должны использовать собственный алгоритм с криптографически безопасным источником случайности.

4
John Woo

При обычной установке php длина всегда равна 26 (например: psprdaccghmmre1oo2eg0tnpe6)

0
Gocha

Я не знаю, где будет использоваться мое приложение, тогда я настроил его как: VARCHAR (127) И надеюсь, что это будет здорово для неизвестных пользователей MySQL.

0
Abbas Uddin