Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Jak to jest z tymi sesjami w PHP?
jacquar
post 25.11.2009, 10:58:02
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?
Go to the top of the page
+Quote Post
ignas1987
post 25.11.2009, 11:48:50
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
Go to the top of the page
+Quote Post
darko
post 25.11.2009, 12:39:57
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(); 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


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
ignas1987
post 25.11.2009, 12:47:51
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 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.


--------------------
Kod
Kiedyś Windows
Teraz Linux
A kiedyś, przed kiedyś Workbench
Go to the top of the page
+Quote Post
darko
post 25.11.2009, 12:52:16
Post #5





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Spokojnie 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...


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
ignas1987
post 25.11.2009, 13:00:55
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 biggrin.gif biggrin.gif biggrin.gif hehe 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


--------------------
Kod
Kiedyś Windows
Teraz Linux
A kiedyś, przed kiedyś Workbench
Go to the top of the page
+Quote Post
darko
post 25.11.2009, 13:06:01
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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 8.07.2025 - 06:27