![]() |
![]() |
-ttdd- |
![]()
Post
#1
|
Goście ![]() |
Przeglądając temat http://forum.php.pl/index.php?s=&showt...st&p=971557 natrafiłem na post !*!, a dokładniej chodzi mi o bezpieczeństwo sesji.
Mam na swojej stronie przy logowaniu do panelu administracyjnego coś takiego (po poprawnym wpisaniu danych):
Do tej pory wydawało mi się to w miarę bezpieczne, ale po przejrzeniu w.w tematu zacząłem mieć wątpliwości. Tak sprawdzam czy administrator jest zalogowany i jeśli tak wyświetlam odpowiednią stronę: Czy taki sposób jest bezpieczny? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 320 Pomógł: 29 Dołączył: 3.04.2010 Ostrzeżenie: (20%) ![]() ![]() |
Złe podejście do tematu. Generalnie domyślna implementacja sesji w PHP jest dobra, ale dla celów edukacyjnych warto napisać własną - poczytaj o session_set_save_handler, jak stworzysz odpowiednie funkcje i zlaczysz je w tej funkcji, możesz korzysta z własnej implementacji jak z domyślnej (operacje na $_SESSION, funkcje session_start(), session_destroy() etc.).
Po pierwsze, opierasz się na istniejącej sesji, zamiast stworzyć własną, co wprowadza niezły bajzel. Po drugie, hashujesz hash (w 99% przypadków session_id() zwraca ci md5() jakiegoś pseudolosowego ciągu). Po trzecie, tworzysz sztywne pola. We własnej implementacji najlepsze według mnie będzie struktura (taki pseudosql bo nie chce ci mieszac pewnych instrukcji dostępnych tylko w PgSQL):
Po czwarte, w miejscu ? chodziło pewnie o sprawdzenie czy funkcja zwraca 0 czy więcej rekordów. mysql_num_rows. We wspomnianej na początku funkcji zobacz "Example #2". EDIT: 2^8 post ;] Ten post edytował greycoffey 26.06.2012, 12:57:36 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 00:49 |