Czy zrobic sesje uzytkownika ?

0

Chcialem spytac o czat i sesje uzytkownika. Zanim uzytkownik wysle wiadomosc do kogos poprzez serwer czatu musi sie zalogowac. Wtedy wyshlamy login haslo i serwer powiedzmy stworzy sesje usera. I teraz jak to powinno wygladac

  1. User dostaje numer sesji po zalogowaniu i za kazdym razem gdy cos wysyla do servera to ma zalaczC numer sesji

Czy

  1. Identyfikator sesji jest zapisany w bazie i nie wysylam do usera ale jak user o danym id wysle wiadomosc to serwer sprawdzi czy sesja jest aktywna i pozwoli pisac. A jesli na ping program klient nie odpowie to kasujemy sesje. Tylko jesli tak by bylo to kazdy by mogl wysylac wiadomos bez znajomosci klucza sesji i teoretycznie by serwer na to zezwolil.

Jak to powinno wygladac ?

0

A ten chat to na HTTP robisz, że ci sesje potrzebne?

0

Tego typu sztuczki są potrzebne w przypadku protokołów bezstanowych - w C możesz spokojnie zestawić stałe połączenie klient-serwer i rozpoznawać użytkowników po połączeniu

0

@sadysta i tak i nie, jeśli np bierze pod uwagę, że mogą być kłopoty z łącznością, to ponowne połączenie po numerze sesji i dla bezpieczeństwa powiedzmy numerze ip nie wymaga ponownego procesu logowania.

0
kaczus napisał(a):

@sadysta i tak i nie, jeśli np bierze pod uwagę, że mogą być kłopoty z łącznością, to ponowne połączenie po numerze sesji i dla bezpieczeństwa powiedzmy numerze ip nie wymaga ponownego procesu logowania.

IMO zły pomysł - to otwiera wszelkie problemy związane z bezpieczeństwem sesji - podkradanie sesji, podszywanie się, itp. Serwer też może paść, po jego wstanięciu klienci będą się starać logować nieaktywnymi sesjami więc trzeba je gdzieś przechowywać i mapować z użytkownikami. Trzeba nadawać ID sesji w taki sposób żeby niemożliwe było jego odgadnięcie - ogólnie dużo zachodu za nic
Lepiej żeby klient pod zerwaniu połączenia po prostu się ponownie zalogował - nie musi tego robić użytkownik

0

@Sadysta Pomysł dobry, oczywiście z pewnymi zastrzeżeniami

  1. sesja to nie jedyny identyfikator
  2. sesja ma czasowe ograniczenie, więc po pewnym czasie automatycznie wygasa
  3. możesz automatycznie login i haslo wysylac, ale to nie jest bezpieczne, a zmuszac użyszkodnika do ciągłego wpisywania hasła może być wkurzające. Pamiętaj - przesadne zabezpieczenia zmniejszają bezpieczeństwo, a nie je podnoszą - patrz comiesięczna konieczność zmiany hasła.
0

ten czat to nie po http to klient i serwer napsiany w C. moge sie polaczyc i rozpoznawac uzytkownika po polaczeniu. co by nawet bylo dobre bo nie trrzeba sesji a nikt sie nie podlaczy w to samo ID chyab ze po ponownym procesie zalogowania. Chociaz nie wiem czy ide w dobrym kierunku

0

Zatem jeśli możesz rozpoznawać użytkownika po połączeniu, zapomnij o sesjach, te są dobre przy wspomnianych protokołach bezstanowych takich jak HTTP (stąd moje pytanie).

0
Sadysta napisał(a):

Tego typu sztuczki są potrzebne w przypadku protokołów bezstanowych - w C możesz spokojnie zestawić stałe połączenie klient-serwer i rozpoznawać użytkowników po połączeniu
A jeśli uzytkownik sie rozlaczy i na to miejsce wskoczy inny znaczy o tym samym polaczeniu ID to chyba powinienem po rozlaczeniu wylogowac usera, albo jednak dac jakis identyfikator przy komunikacji pozniej z serwerem po zalogowaniu

0

Użytkownicy rozpoznawani są po loginie a nie po deskryptorze. Deskryptor/połączenie identyfikuje jedynie sesję użytkownika po zalogowaniu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1