-->

什么是PHP的会话ID字符串的长度?(What is the length of a PHP ses

2019-06-27 17:56发布

我在做一个表在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_functionsession.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?