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を設定することにより)、3つのsession.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およびsession .hash_bits_per_character
セッションIDの長さが短いほど衝突の可能性が高くなりますが、これはID生成アルゴリズムにも大きく依存します。デフォルト設定では、セッションIDの長さはほとんどのアプリケーションに適しているはずです。より高いセキュリティの実装については、PHPがセッションIDを生成する方法を調べ、暗号的に安全かどうかを確認することを検討してください。ランダム性のソース。
通常のphpインストールの長さは常に26です(exmp:psprdaccghmmre1oo2eg0tnpe6)
私のアプリケーションがどこで使用されるかわからないので、次のように設定します。