Robię tabelę w bazie danych MySQL, aby zapisać niektóre dane sesji, w tym session_id
. Jaka powinna być długość pliku VARCHAR
, aby zapisać ciąg znaków session_id
?Jaka jest długość ciągu identyfikacyjnego sesji PHP?
Odpowiedz
Zależy od session.hash_function i session.hash_bits_per_character.
Sprawdź stronę session_id, aby uzyskać więcej informacji.
Im wyższe ustawienie session.hash_bits_per_character krótszego swojej session_id staną się za pomocą większej liczby bitów na znak. Możliwe są wartości 4, 5 lub 6.
Przy użyciu SHA-1 mieszania (przez ustawienie session.hash_function ini_set ('', 1) w następujący ciąg sesji odcinki są wytwarzane przez sesję trzy. hash_bits_per_character ustawienia:
4 - 40 ciąg znaków
5 - 32 ciąg znaków
6 - 27 ciąg znaków
To zależy od tych ustawień konfiguracyjnych: session.hash_function i session.hash_bits_per_character
krótszych identyfikator sesji mają większą szansę kolizji, ale to też zależy wiele od algorytmu generacji ID. Biorąc pod uwagę ustawienia domyślne, długość identyfikatora sesji powinna być odpowiednia dla większości aplikacji. W przypadku implementacji o wyższym poziomie bezpieczeństwa można rozważyć, w jaki sposób PHP generuje identyfikatory sesji i sprawdzić, czy jest ona bezpieczna kryptograficznie. Jeśli tak nie jest, powinieneś przetasować własny algorytm z kryptograficznie bezpiecznym źródłem losowości.
Prawdopodobieństwo kolizji jest całkowicie zależy od funkcji mieszającej, entropii używane i natężenia ruchu. Korzystanie z bezpieczniejszej funkcji mieszania spowoduje utworzenie większego ciągu identyfikacyjnego sesji, więc jeśli masz na myśli krótsze długości identyfikatorów sesji o wyższej szansie na kolizję, to masz rację, ale skróć tę długość, używając większej głębi bitowej na znak nie przyniesie efektu. – Jason
Czy sesja o długości 128 znaków jest przesadą dla ogólnej aplikacji internetowej? – TheFrost
@ Odpowiedź brzmiąca nie jest pełna.
Bardziej szczegółowe informacje dotyczące długości identyfikatora sesji są opisane here.
Podsumowanie:
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
i próbki regex aby sprawdzić identyfikator sesji:
preg_match('/^[a-zA-Z0-9,-]{22,40}$/', $sessionId)
to było dla mnie pomocne !!! – SirJ
Doskonała odpowiedź, brakujący element układanki dla mnie. –
nie wiem gdzie jest moja aplikacja będzie używany następnie ustawić go jako: VARCHAR (127) i mam nadzieję, że będzie świetny dla nie znanych użytkowników MySQL.
Jeśli przez nieznany rozumiesz nieznany, możesz rozważyć ustawienie jako TEKST, który się skurczy i rozwinie w razie potrzeby, w przeciwnym razie będziesz mieć dużo pustego miejsca w tabeli, a nawet może się to nie udać z wartością długości 128 . – Gustavo
@GustavoPinent VARCHAR jest szybszy niż TEKST. –
@TichomirMitkov yep, będzie musiał zdecydować pomiędzy bezpiecznym i elastycznym tekstem a szybkim VARCHAR – Gustavo
Dzięki regularnej długości instalacji php jest zawsze 26 (exmp: psprdaccghmmre1oo2eg0tnpe6)
- 1. Jaka jest maksymalna długość łańcucha w PHP?
- 2. Jaka jest maksymalna długość ListProperty?
- 3. Maksymalna długość ciągu Sqlite Androida?
- 4. HttpResponse na długość ciągu 0 jest zwracana
- 5. Długość ciągu w pikselach
- 6. Długość ciągu bash
- 7. Maksymalna długość życia sesji na iPada przy użyciu PHP?
- 8. Jaka jest długość haszowanego łańcucha z SHA512?
- 9. Jaka jest maksymalna długość wyciągu w Oracle
- 10. Jaka jest maksymalna długość obiektu NSString?
- 11. Długość sesji Firebase nowej konsoli
- 12. Czy moje rozumienie sesji PHP jest poprawne?
- 13. Jak uzyskać długość ciągu znaków
- 14. określa długość ciągu tekstowego DB2
- 15. PHP: Jaki jest domyślny czas życia sesji
- 16. Apache, PHP Niepoprawna długość zawartości
- 17. Maksymalny rozmiar sesji PHP
- 18. Długość ciągu znaków przekracza długość skonfigurowaną w odwzorowaniu/parametrze
- 19. Dlaczego rozmiar bajtów ciągu jest dłuższy niż długość?
- 20. Jaka jest maksymalna długość identyfikatora SID w formacie SDDL
- 21. Mac OS X Lion: Jaka jest maksymalna długość ścieżki?
- 22. Jaka jest maksymalna długość komunikatu dla brokera MQTT?
- 23. Jaka jest długość token urządzenia iOS i Androidów
- 24. Jaka jest maksymalna długość polecenia wiersza poleceń Window (cmd.exe)?
- 25. Jaka jest maksymalna długość nazwy obiektu blob Azure?
- 26. Jaka jest maksymalna długość nazwy atrybutu w python?
- 27. Znaleźć długość ciągu liczby całkowitej w .NET
- 28. podciągu w PowerShell obciąć długość ciągu
- 29. czy możliwe jest uzyskanie unikalnego numeru identyfikacyjnego z urządzenia mobilnego?
- 30. Jak określić długość (w pikselach) ciągu renderowanego na stronie internetowej?
Tak więc 40 znaków to bezpieczny zestaw, a jeśli chcę zapisać kilka bajtów, muszę sprawdzić konfigurację php, prawda? – Gustavo
Sprawdź php.ini, aby zobaczyć, jakie są ustawienia. 40 znaków jest wynikiem funkcji skrótu SHA-1 i 4 bitów na znak. Możesz zrobić "echo strlen (session_id());", aby zobaczyć długość i odpowiednio ustawić swoje pole bazy danych. – sachleen
Dla odniesienia, długość session_id będzie również 32, jeśli używasz funkcji mieszania MD5 i 4 bity haszowania na znak. To sprawiło, że dzisiaj wydzierałem włosy na kilka godzin. – sevenseacat