Ich mache eine Tabelle in einer MySQL-Datenbank, um einige Sitzungsdaten zu speichern, einschließlich session_id
. Wie lang sollte die Variable VARCHAR
sein, um die session_id
-Zeichenfolge zu speichern?
Abhängig von session.hash_function und session.hash_bits_per_character .
Weitere Informationen finden Sie auf der Seite session_id .
Je höher Sie session.hash_bits_per_character setzen, desto kürzer ist Ihr session_id wird durch die Verwendung von mehr Bits pro Zeichen. Das Mögliche Werte sind 4, 5 oder 6.
Wenn Sie sha-1 für Hashing verwenden (durch Setzen von Ini_set ('session.hash_function', 1)), werden die folgenden Sitzungszeichenfolgen
4 - 40 Zeichenfolge
5 - 32 Zeichenfolge
6 - 27 Zeichenfolge
@sachleen Antwort ist nicht voll.
Nähere Informationen zur Länge der Sitzungs-ID werden beschrieben hier .
Zusammenfassung:
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
Und Beispiel für Regex zum Überprüfen der Sitzungs-ID:
preg_match('/^[a-zA-Z0-9,-]{22,40}$/', $sessionId)
Es hängt von diesen Konfigurationseinstellungen ab: session.hash_function und session.hash_bits_per_character
Kürzere Sitzungs-ID-Längen haben eine höhere Kollisionswahrscheinlichkeit, dies hängt jedoch auch stark vom ID-Generierungsalgorithmus ab. Aufgrund der Standardeinstellungen sollte die Länge der Sitzungs-ID für die meisten Anwendungen angemessen sein. Bei Implementierungen mit höherer Sicherheit können Sie prüfen, wie PHP die Sitzungs-IDs generiert, und prüfen, ob sie kryptografisch sicher sind. Wenn dies nicht der Fall ist, sollten Sie Ihren eigenen Algorithmus mit einer kryptografisch sicheren Zufallsquelle ausführen.
Die reguläre PHP-Installationslänge ist immer 26 (exmp: psprdaccghmmre1oo2eg0tnpe6)
Ich weiß nicht, wo meine Anwendung verwendet werden soll, und richtete sie wie folgt ein: VARCHAR (127) Und hoffe, es wird für unbekannte MySQL-Benutzer großartig.