![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 17.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
Napisałem system autoryzacji, który wykorzystuję na kilku swoich serwisach www. W systemie tym w zmiennych sesji umieszczam (po uprzednim sprawdzeniu czy ktoś ma prawo) zmienną user, której przypisany jest login użytkownika. Przy wejściu na zastrzeżoną podstronę sprawdzam czy jest zmienna sesyjna user i jak jest to wpuszczam klienta. Wszystko działa dobrze, ale...
Gdy w przeglądarce otworzę zupełnie inny serwis, rówież korzystający z tego systemu autoryzacji, to zmienna sesyjna user jest TĄ samą zmienną, którą zainicjowałem logując sią do poprzedniego serwisu i użytkownik, który ma prawo korzystać z poprzednuiego serwisu, a nie ma prawa do tego serwisu, spokojnie sobie wchodzi. Jak to jest z tymi sesjami? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 78 Pomógł: 3 Dołączył: 10.11.2008 Skąd: Radom Ostrzeżenie: (0%) ![]() ![]() |
Najlepiej zastosować coś takiego, że przy wyjściu ze strony:
Kod <?php
start_session(); session_destroy(); ?> Ten post edytował ignas1987 25.11.2009, 11:50:10 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Cytat Najlepiej zastosować coś takiego, że przy wyjściu ze strony: Kod <?php start_session(); session_destroy(); ?> start_session(); (IMG:style_emoticons/default/questionmark.gif) chyba session_start A co to da, jeśli user się nie wyloguje, tylko zmieni serwis wpisując adres w pasku przeglądarki? IMHO najlepiej jest zapisywać w sesji w miarę unikatowe a jednocześnie jednoznacznie identyfikujące usera dane. Przykładowo możesz utworzyć hash md5 z następujących pól w tabeli user: id, data_dodania, login i zapisać go w sesji np. jako user_token. Generalnie chodzi o to, żeby te dane były niezmienne (zapisane raz do bazy nie podlegały późniejszej modyfikacji) dla każdego użytkownika i żeby zapisywać też id usera. Później, jak sprawdzasz czy user jest zalogowany, to dla zapisanego w sesji id usera wyciągasz te dane z bazy, które zahashowałeś przed zapisaniem w sesji, analogicznie hashujesz je i porównujesz z hashem w sesji, jeśli się zgadzają, to użytkownik jest autoryzowany, jeśli nie, to redirect. Ten post edytował darko 25.11.2009, 12:42:42 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 78 Pomógł: 3 Dołączył: 10.11.2008 Skąd: Radom Ostrzeżenie: (0%) ![]() ![]() |
jest coś takiego jak wykonanie skryptu przed wyjściem ze strony. Od czego masz javascript (IMG:style_emoticons/default/questionmark.gif) a z tym session_start() to po prostu pomyłka, pisze w międzyczasie i siedze w pracy, dlatego może tak automatycznie odpisałem ale niedokładnie.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Spokojnie (IMG:style_emoticons/default/smile.gif) Uważam, że zabezpieczenia i javascript to pomyłka, (js zawsze można wyłączyć, stronę można zapisać na dysku twardym i usunąć kod js itd. itp.) no ale to moje zdanie...
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 78 Pomógł: 3 Dołączył: 10.11.2008 Skąd: Radom Ostrzeżenie: (0%) ![]() ![]() |
W sumie to z tym js masz racje (IMG:style_emoticons/default/biggrin.gif) (IMG:style_emoticons/default/biggrin.gif) (IMG:style_emoticons/default/biggrin.gif) hehe (IMG:style_emoticons/default/aaevil.gif) a z tym zabezpieczeniem to najlepszy sposób tzw. hash, przechowujący losowy ciąg znaków nadany przy wejściu na stronę, identyfikujący usera
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Lepiej: nie losowy, a utworzony - jak wyżej napisałem - na podstawie pewnych stałych danych o userze. Co ciekawe, jest dość niewielkie prawdopodobieństwo wystąpienia kolizji, w powyższym przykładzie będzie mieć miejsce w przypadku, kiedy w dwóch różnych serwisach (z tym samym mechanizmem) będzie dwóch userów o tym samym id, loginie i dacie dodania do bazy. Można to rozwiązać dodając w każdym z tych serwisów inną sól (oczywiście taką samą w obrębie jednego serwisu).
Ten post edytował darko 25.11.2009, 13:08:57 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 22:38 |