我在做一个表在MySQL数据库中保存一些会话数据,包括session_id
。 应该是什么长度VARCHAR
存储session_id
字符串?
Answer 1:
取决于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字符串
Answer 2:
@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)
Answer 3:
这取决于这些配置设置: session.hash_function和session.hash_bits_per_character
较短的会话ID的长度有碰撞的几率较高,但这也取决于ID生成算法很多。 由于默认设置,会话ID的长度应适合于大多数应用。 对于更高的安全性的实现,你可以考虑寻找到PHP如何生成的会话ID,并检查它是否是加密安全。 如果不是,那么你应该与随机性的加密安全源推出自己的算法。
Answer 4:
我不知道我的应用程序将用于然后我将它设置为:VARCHAR(127),并希望这将是巨大的未知MySQL用户。
Answer 5:
通过常规PHP的安装长度总是26(exmp:psprdaccghmmre1oo2eg0tnpe6)
文章来源: What is the length of a PHP session id string?