Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Websockety i bezpieczne przekazywanie danych sesji
denis94
post
Post #1





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 8.08.2010
Skąd: Warszawa

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


Witam.
Zaczynam zabawę z websocketami których będę musiał użyć w swoim projekcie. Aktualnie zacząłem naukę od prostego chatu w czasie rzeczywistym. Z samymi websocketami sobie poradziłem, zarówno klient jak i serwer działają prawidłowo, nawiązuje się połączenie a wiadomości na czacie wyświetlają się pozostałym użytkownikom błyskawicznie.
Mam jednak problem a w zasadzie brak pomysłu na to w jaki sposób mogę weryfikować użytkowników. Każdy użytkownik loguje się na stronie swoim loginem i hasłem i tworzona jest przez php zwykła sesja.
Mam więc kilka pytań.

W jaki sposób zrealizować po stronie serwera weryfikację czy wiadomość która dotarła od użytkownika XXX na pewno pochodzi od użytkownika zalogowanego?
W jaki sposób weryfikować jego sesję utworzoną przez zwykłe $_SESSION['login'] ?
W jaki sposób zablokować możliwość łączenia się z serwerem websocketów z domen innych niż moja i uniemożliwić podszywanie się pod zalogowanych użytkowników?

Nie pytałbym gdybym wcześniej nie szukał. Z góry dziekuję.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
by_ikar
post
Post #2





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Sesja php jest tworzona po stronie serwera a użytkownikowi zostaje utworzone cookie, w którym znajduje się ID sesji. W przypadku domyślnych ustawień, ów ID sesji nie jest niczym innym jak nazwą pliku z zserializowaną tablicą. I chciałbyś uwierzytelnić użytkownika, gdyby sockety miały dostęp do tej sesji z php, którą też mógłbyś sobie deserializować, to wtedy wiedziałbyś czy dany użytkownik jest danym użytkownikiem. Po prostu musisz jakoś współdzielić tą sesje, bo do tego cookie z ID sesji serwer z websocketami będzie miał dostęp, o ile są w tym samym hoście. Jak nie, to musisz utworzyć takie cookie też dla tego hosta gdzie jest serwer websocketów. Jak współdzielić taką sesje ? Sposobów jest wiele. Handler sesji w php może być "nadpisany" poprzez sterowniki różnego rodzaju. Np sterownik redisa, czy memcached, zawsze możesz też napisać jakiś swój własny handler, albo próbować dobrać się do plików sesyjnych tworzonych domyślnie przez php.

Czy to jest bezpieczne? Jeżeli się obawiasz o bezpieczeństwo użyj httpsa, wtedy cała komunikacja będzie szyfrowana. Jeżeli nie chcesz używać httpsa, wciąż jest to w dość bezpieczne (na tym forum nie ma https, a ID sesji leci nie szyfrowane w ciasteczkach).
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 11.10.2025 - 10:43