web-dev-qa-db-ja.com

PHPセッションID文字列の長さは?

MySQLデータベースにテーブルを作成して、session_idなどのセッションデータを保存しています。 session_id文字列を格納するVARCHARの長さはどのくらいですか?

38
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を設定することにより)、3つのsession.hash_bits_per_character設定により、次のセッション文字列の長さが生成されます。

4〜40文字の文字列

5〜32文字の文字列

6から27文字の文字列

33
sachleen

@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)
29
Andron

次の構成設定に依存します:session.hash_functionおよびsession .hash_bits_per_character

セッションIDの長さが短いほど衝突の可能性が高くなりますが、これはID生成アルゴリズムにも大きく依存します。デフォルト設定では、セッションIDの長さはほとんどのアプリケーションに適しているはずです。より高いセキュリティの実装については、PHPがセッションIDを生成する方法を調べ、暗号的に安全かどうかを確認することを検討してください。ランダム性のソース。

4
John Woo

通常のphpインストールの長さは常に26です(exmp:psprdaccghmmre1oo2eg0tnpe6)

0
Gocha

私のアプリケーションがどこで使用されるかわからないので、次のように設定します。

0
Abbas Uddin