我正在MySQL数据库中制作一个表来保存一些会话数据,包括session_id
。存储session_id
字符串的VARCHAR
的长度应该是多少?
取决于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)以下会话字符串长度由三个会话产生。hash_bits_per_character设置:
4-40个字符串
5-32个字符串
6-27个字符串
@sachleen答案未满
关于会话id长度的更多详细信息在这里介绍。
摘要:
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
和用于检查会话id:的正则表达式示例
preg_match('/^[a-zA-Z0-9,-]{22,40}$/', $sessionId)
它取决于以下配置设置:session.hash_function和会话.hash_bits_per_character
会话ID长度越短,发生冲突的几率越高,但这在很大程度上也取决于ID生成算法。给定默认设置,会话ID的长度应该适合大多数应用程序。对于更高安全性的实现,您可以考虑研究PHP如何生成会话ID,并检查它在加密方面是否安全。如果不是,那么你应该用加密安全的随机性来源推出自己的算法。
根据常规php安装长度始终为26(exmp:psrdacghmmre1oo2eg0tnpe6)
从PHP 7.1开始,如果使用session_create_id(),默认会话id长度为32个字符,但是用户可以在PHP.ini 中更改此默认值
请参阅php.ini设置会话。sid_length