[PHP]zapamietaj mnie w formularzu logowania |
[PHP]zapamietaj mnie w formularzu logowania |
9.02.2013, 22:45:22
Post
#1
|
|
Grupa: Zarejestrowani Postów: 518 Pomógł: 18 Dołączył: 21.07.2008 Ostrzeżenie: (0%) |
Witam.
Jakis czas temu napisalem na wlasne potrzeby system logowania oparty o sesje i baze danych. Chcialbym do tego dopisac teraz checkbox do zapamietania uzytkownika jako stale zalogowanego. Problem niby banalny bo po poprawnym zalogowaniu wystarczy dac setcookie z id usera, ip kompa i przegladarke z ktorej sie logowal. No ale jesli ktos wylapie takie ciastko to system lezy. Sprawa druga to kwestia taka ze ip logujacego moze sie np zmienic i co wtedy ? czy moge prosic o podpowiedz jak podejsc do tego tematu uwzgledniajac wspolczesne kwestie bezpieczenstwa takiego autologowania za wszelka pomoc z gory dziekuje i pozdrawiam Grzegorz |
|
|
9.02.2013, 23:48:26
Post
#2
|
|
Grupa: Zarejestrowani Postów: 651 Pomógł: 116 Dołączył: 3.06.2012 Skąd: Lędziny Ostrzeżenie: (0%) |
Przy zaznaczeniu checkbox'a ładujesz do bazy temu użytkownikowi losowy ciąg znaków, najlepiej dosyć skomplikowany i długi. Do tego możesz zapisać np. jego user_agent w tym momencie i też zapisać do do bazy. Tworzysz ciasteczko z zawartością tego losowego ID i na starcie, przed samym logowaniem na strone, umieszczasz kod, ktory sprawdza czy ciasteczko (nazwijmy je sobie 'autologin') istnieje, a jeśli istnieje to sprawdzasz w bazie do jakiego usera jest to ID przypisane. Jeśli znajdziesz tego usera to sprawdzasz dodatkowo czy user_agent logującego zgadza się z tym zapisanym wcześniej w bazie. Jeśli wszystko jest OK to normalnie go logujesz i dla bezpieczeństwa możesz wygenerować nowy, losowy ciąg znaków i zaktualizować go w bazie + zmienić zawartość ciasteczka. W przypadku niepowodzenia niszczysz to ciasteczko, wiadomo.
|
|
|
10.02.2013, 11:36:12
Post
#3
|
|
Grupa: Zarejestrowani Postów: 518 Pomógł: 18 Dołączył: 21.07.2008 Ostrzeżenie: (0%) |
Tworzysz ciasteczko z zawartością tego losowego ID i na starcie, przed samym logowaniem na strone, umieszczasz kod, ktory sprawdza czy ciasteczko ciastko z losowym stringiem czy ciastko z id rekordu ? (rekord zawiera user_agenta losowy string itp.) I ostatnie pytanie bo jesli umieszcze tego typu mechanizm w pliku index.php to czy bedziemi sie to sprawdzalo przy kazdym zaladowaniem strony czy tylko podczas probu logowania ? (zakladam ze np logowanie i prosta tresc to ten sam plik) pozdrawiam G |
|
|
10.02.2013, 12:29:05
Post
#4
|
|
Grupa: Zarejestrowani Postów: 283 Pomógł: 31 Dołączył: 10.01.2006 Skąd: Działoszyn Ostrzeżenie: (0%) |
1. Losowy string i 'losowe ID' zostały tam użyte zamiennie. Czyli masz ciastko o nazwie 'autologin' z wartością 'losowy_string'. W bazie masz np. tabelę:
Kod user_id | losowy_string | user_agent i przy wywołaniu skryptu sprawdzasz czy w bazie istnieje takie ID jak w ciasteczku, i jeśli tak - sprawdzasz, czy user_agent się zgadza. Jeśli się zgadza, to logujesz użytkownika o zgodnym z tymi danymi user_id.2. Jeśli umieścisz w jakimś pliku (u Ciebie ten index.php) to będzie wykonywane za każdym razem, gdy ktoś odwiedzi tą stronę (o adresie index.php). Należy dodać warunek, żeby się wykonywało tylko w przypadku, gdy użytkownik nie jest zalogowany. Ten post edytował Michasko 10.02.2013, 12:33:48 -------------------- Po prawie 3-letniej przerwie w programowaniu, znowu raczkuję :) |
|
|
10.02.2013, 16:47:25
Post
#5
|
|
Grupa: Zarejestrowani Postów: 518 Pomógł: 18 Dołączył: 21.07.2008 Ostrzeżenie: (0%) |
no tak teraz rozumie. dzieki
|
|
|
Wersja Lo-Fi | Aktualny czas: 29.03.2024 - 02:39 |