![]() |
![]() ![]() |
![]() |
![]()
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 -------------------- Kod Kiedyś Windows Teraz Linux A kiedyś, przed kiedyś Workbench |
|
|
![]()
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(); ![]() 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 -------------------- Nie pomagam na pw, tylko forum.
|
|
|
![]()
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
![]() -------------------- Kod Kiedyś Windows Teraz Linux A kiedyś, przed kiedyś Workbench |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Spokojnie
![]() -------------------- Nie pomagam na pw, tylko forum.
|
|
|
![]()
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
![]() ![]() ![]() ![]() -------------------- Kod Kiedyś Windows Teraz Linux A kiedyś, przed kiedyś Workbench |
|
|
![]()
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 -------------------- Nie pomagam na pw, tylko forum.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 8.07.2025 - 06:27 |