![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 72 Pomógł: 0 Dołączył: 25.01.2006 Skąd: Oświęcim Ostrzeżenie: (0%) ![]() ![]() |
Witam!!
Hmm.. widze, ze zainteresowanie moim poprzednim tematem (http://forum.php.pl/index.php?showtopic=40840) jest takie sobie... Ale moze to was troche ruszy do dzialania. Kiedy wlaczam przegladarke wyskakuje okienko logowania i jest ok. Wpisuje login haslo jesli dobrze to przechodze do odpowiedniej podstrony. Nastepnie daje "Wyloguj" i wtedy wracam do pulpitu logowania i tu sie pojawia problem bo kiedy daje w przegladarce cofnij to sie mi wyswietla info ze ta podstrona stracila waznosc, ale kiedy daje odswierz pojawia sie mi znow strona, ktora powinna byc widoczna tylko po zalogowaniu. I dopiero kiedy wylacze przegladarke i wlacze na nowo to dopiero znow ta chroniona czesc jest niedostepna... Jak tego uniknac? Co mam dodac w kodzie? Aha i jeszcze niekiedy mam widoczny sid w okienku adresowym... Da sie o jakos usunac? Slyszaszalem, ze ciastka sa dobrym sposobem na zabezpieczenie strony, tylko nie bardzo wiem na czym to polega... Moglby mi ktos wyjasnic jak w moim kodzie moglbym wykorzystac ciastka? Ten post edytował adeq_PL 26.01.2006, 17:12:53 -------------------- Wszystko powinno zostać uproszczone tak bardzo, jak to tylko możliwe, ale nie bardziej. - Albert Einstein
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 789 Pomógł: 41 Dołączył: 30.10.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli twoja przeglądarka ma wyłączoną obsługę COOKIES to identyfikator sesji (domyślnie) przetrzymywany jest w pasku adresu i przesyłany GET'em. Możesz włączyć obsługę cookies, wtedy identyfikatora sesji nie będzie w pasku adresu, będzie on pobierany z COOKIES'ów.
Jeżeli po wylogowaniu się, używasz session_destroy() to sesja jest usuwana z katalogu serwera, inaczej sesja ta pozostaje. Serwer ma funkcję Garbage Collector, który usuwa sesje nie zaktualizowane przez ostatnie, bodajże, 24 godziny. Jeżeli w ciągu tych 24 godzin, ktoś przejmie identyfikator niewylogowanego użytkownika to jest niebezpieczeństwo przejęcia kontroli nad aplikacją. Można tego uniknąć, jeżeli użytkownik ma włączone ciastka w przeglądarce, wtedy wyciągnięcie identyfikatora sesji będzie nieco trudniejsze. Wtedy sesja przepada w momencie zamknięcia przeglądarki, więc identyfikatora już nie wyciągniesz, wtedy po 24 godzinach Garbage Collector usuwa tą sesję. Ewentualnie można skorzystać z własnego mechanizmu przetrzymywania sesji, co daje większe bezpieczeństwo, tj. możesz sprawdzać czy IP jest identyczne z tym, którego użyto podczas przetwarzania skryptu logowanie, czy identyfikator przeglądarki jest ten sam itd. Artykułów na temat tworzenia własnego Session Handlera jest wiele w internecie (nawet na php.pl jest) więc radzę zapoznać się z nimi ![]() |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 72 Pomógł: 0 Dołączył: 25.01.2006 Skąd: Oświęcim Ostrzeżenie: (0%) ![]() ![]() |
Ale przeciez ja mam napisana funkcje unset($_SESSION['logadm']); , ktora jest odpowiednikiem session_destroy(); , pomimo to i tak dajac cofnij i odswierzajac strone pojawia sie mi zastrzezona zawartosc.
Czy to prawidlowa reakcja przegladarki? OK Juz nie aktualne! Zrobilem tak, ze nie wyswietla zakaznej zawartosci. Nie wiem jak to sie stalo ale wystarczylo zmienic : Kod $string = '<form action="'.getenv(REQUEST_URI).'" method="post">'; $string .= ' <input type="submit" name="unlogadm" value="Wyloguj" />'; $string .= '</form>'; na Kod $string .= '<A name="unloginst" href='.getenv(REQUEST_URI).'>wyloguj</A>'; i wszystko gra ![]() Ten post edytował adeq_PL 26.01.2006, 21:54:56 -------------------- Wszystko powinno zostać uproszczone tak bardzo, jak to tylko możliwe, ale nie bardziej. - Albert Einstein
|
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(adeq_PL @ 2006-01-26 20:02:29) Ale przeciez ja mam napisana funkcje unset($_SESSION['logadm']); , ktora jest odpowiednikiem session_destroy(); Jesteś w błędzie. Sesja a dane jakie ona przechowuje to dwie różne rzeczy. Możesz usunąć wszelkie dane z sesji (za pomocą unset()) ale to nadal będzie ta sama sesja. Sesję zakończysz uzywając session_destroy() (od razy skasujesz dane, które trzymała) |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 04:28 |