PHP会话ID字符串的长度是多少?

时间:2012-09-03 00:59:11

标签: php mysql session sessionid

我在MySQL数据库中创建一个表以保存一些会话数据,包括session_idVARCHAR存储session_id字符串的长度应该是多少?

5 个答案:

答案 0 :(得分:33)

取决于session.hash_functionsession.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个字符串

答案 1 :(得分:29)

@sachleen的回答并不完整 有关会话ID长度的更详细信息,请参阅here

摘要:

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)

答案 2 :(得分:4)

这取决于这些配置设置: session.hash_function session.hash_bits_per_character

较短的会话ID长度具有较高的冲突机会,但这也很大程度上取决于ID生成算法。给定默认设置,会话ID的长度应适合大多数应用程序。对于更高安全性的实现,您可以考虑查看PHP如何生成其会话ID并检查它是否在加密方面是安全的。如果不是,那么您应该使用加密安全的随机源来推广自己的算法。

答案 3 :(得分:0)

我不知道我的应用程序将用于何处,然后我将其设置为:     VARCHAR(127) 并希望对于未知的MySQL用户来说会很棒。

答案 4 :(得分:0)

通过常规php安装长度始终为26(exmp:psprdaccghmmre1oo2eg0tnpe6)

相关问题