Zapamiętanie, czy użytkownik jest zalogowany.

0

Witam,
jak w bezpieczny sposób zapamiętać, czy użytkownik jest zalogowany na stronę, czy nie, aby przy każdym wejściu nie było to wymagane? Na przykład na facebook po zalogowaniu aż do wylogowania wchodząc na stronę jesteśmy od razu zalogowani. Myślę, że należałoby użyć tu cookie, ale przechowywanie loginu i hasła w pamięci przeglądarki to nienajlepszy pomysł. Ma ktoś pomysł jak to zrobić, aby było użytecznie i bezpiecznie?

8

Ale nikt nie przechowuje w cookies takich informacji jak login czy hasło. Zamiast tego musisz po stronie serwera stworzyć sobie (oczywiście - piszę w dużym uproszczeniu) jakąś tablicę/bazę, w której będziesz miał zapisane kilka informacji.

W chwili zalogowania się usera dajesz danej sesji/logowaniu jakieś ID. A potem sobie zapisujesz na serwerze, że ciasteczko o ID 5345534dsfsd3245we5r oznacza sesję należącą do usera o ID 434429. Ponadto, możesz jeszcze sobie zapisać inne dane - np. czas powstania tego ciasteczka, żeby co jakiś czas wymagać ponownego zalogowania (bo trzymanie tego miesiącami czy latami nie wiem, czy jest dobrym pomysłem). Możesz także zastosować inne zabezpieczenia - np. zapisać sobie dane przeglądarki (User-agent) czy adres IP i jak wykryjesz niezgodność tych danych z zapisanymi informacjami to możesz dla bezpieczeństwa taką sesję zakończyć (istnieje ryzyko, że ktoś przechwycił ciasteczko i stara się podszyć pod Twojego użytkownika). Aczkolwiek jest to ryzykowne, bo jak np. ktoś się łączy przez komórkę, to za każdym razem może mieć inny adres IP, albo ma laptopa i logował się w pracy, a teraz odpalił ponownie tego samego kompa w domu.

A gdy user wciśnie przycisk "wyloguj" to przeszukujesz bazę informacji o ciasteczkach i kasujesz wpisy o wszystkich cookies związanych z tym użytkownikiem - coś w styu DELETE * FROM sesje WHERE userID=434429. Przy kolejnym wejściu, przeglądarka przekaże do serwera ID ciasteczka, a serwer ustali, że takiego ciasteczka nie ma na liście zapamiętanych, przez co wymusi ponowne zalogowanie się.

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