[PHP]Cookies i auto logowanie |
[PHP]Cookies i auto logowanie |
29.05.2012, 18:22:18
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) |
Witam,
wiele czytałem już, że np loginów i haseł nie możemy trzymać w cookie, tak samo uprawnienia użytkownika nie mogą tam być trzymane ze względów bezpieczeństwa. Więc krótkie pytanie. Jak zrobić takie logowanie z opcją "Remember me" ? Co trzymać w cookies żeby logowanie działało np przez 24h, a co trzymać w sesji ? |
|
|
29.05.2012, 19:02:56
Post
#2
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) |
ID + useragent + cokolwiek + IP(choć to ostatnio kwestia sporna) zapisujesz te dane z sha1/md5 czy czymkolwiek.
-------------------- Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta). |
|
|
29.05.2012, 19:05:41
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) |
To trzymać w cookie ? A co dalej z takim czymś zrobić ? sprawdzać czy takie cookie istnieje, jeśli tak to zalogowany ?
|
|
|
29.05.2012, 19:05:45
Post
#4
|
|
Grupa: Zarejestrowani Postów: 320 Pomógł: 29 Dołączył: 3.04.2010 Ostrzeżenie: (20%) |
ID + useragent + cokolwiek + IP(choć to ostatnio kwestia sporna) zapisujesz te dane z sha1/md5 czy czymkolwiek. Czy ja wiem? Łatwe do sfabrykowania, jeśli za cokolwiek uznajesz "az@fjd45W_P". W tabeli w bazie danych dodajesz pole "autologin_token", do którego wkładasz hash losowej liczby/losowego ciągu znaku/cokolwiek losowego. To samo dodajesz do ciasteczka dla uzytkownika. Logujesz go normalnie, tylko zamiast sprawdzania loginu i hasła - sprawdzasz token. |
|
|
29.05.2012, 19:06:31
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) |
greycoffey możesz mnie bardziej na to naprowadzić ?
|
|
|
29.05.2012, 19:10:03
Post
#6
|
|
Grupa: Zarejestrowani Postów: 320 Pomógł: 29 Dołączył: 3.04.2010 Ostrzeżenie: (20%) |
greycoffey możesz mnie bardziej na to naprowadzić ? Na co dokładniej? W cookie trzymasz tylko identyifaktor służący do autologowania, który jest kluczem, tak samo jak para login-hasło. Zamiast na podstawie loginu i hasła logować użytkownika, rozpoznajesz go za pomocą tokenu znajdującego się w cookie, który jest generowany na podstawie losowego ciągu i zapisywany w bazie.
|
|
|
29.05.2012, 19:13:09
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) |
1) Przy każdym logowaniu sprawdzam czy token użytkownika jest w bazie i zgadza się z tym który gość ma w cookie ?
2) Przy każdym pierwszym logowaniu (gdy brak cookie -> czyli użytkownik dawno się nie logował albo wcisnął WYLOGUJ) generuję losowy token i zapisuję/aktualizuję z tym, który jest zapisany przy logującym się użytkowniku ? |
|
|
29.05.2012, 19:28:26
Post
#8
|
|
Grupa: Zarejestrowani Postów: 320 Pomógł: 29 Dołączył: 3.04.2010 Ostrzeżenie: (20%) |
1) Przy każdym logowaniu sprawdzam czy token użytkownika jest w bazie i zgadza się z tym który gość ma w cookie ? 2) Przy każdym pierwszym logowaniu (gdy brak cookie -> czyli użytkownik dawno się nie logował albo wcisnął WYLOGUJ) generuję losowy token i zapisuję/aktualizuję z tym, który jest zapisany przy logującym się użytkowniku ? 1) Taki schemat: Jeśli użytkownik nie jest azlogowany a posiada ciastko o nazwie 'token': Sprawdź czy istnieje w bazie, jeśli tak, zaloguj go. Jeśli nie - usuń. W przeciwnym wypadku pomiń te akcje. 2) Tak. Polecam do tego ciastko ustawić z flagą httpOnly aby zapobiec niektórym rodzajom przechwyceń. Więcej w manualu do funkcji setcookie. Ten post edytował greycoffey 29.05.2012, 19:30:29 |
|
|
30.05.2012, 09:49:10
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) |
Co zrobić w przypadku, gdy użytkownik nie zaznaczy REMEMBER ME ? Ustawić to samo ciasteczko na 15min czy np stworzyć do tego sesję działającą na zasadzie -> jeśli poruszasz się po stronie, jesteś zalogowany / zamkniesz zakładkę czy przeglądarkę zostajesz wylogowany ?
|
|
|
30.05.2012, 13:46:58
Post
#10
|
|
Grupa: Zarejestrowani Postów: 320 Pomógł: 29 Dołączył: 3.04.2010 Ostrzeżenie: (20%) |
Nie dajesz ciasteczka, ani nie generujesz tokenu. Działa to tak jak zwykle.
|
|
|
30.05.2012, 14:53:57
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) |
Ale sesja jakaś musi być ? Ze względu na ciągłe poruszanie się między stronami żebym był zalogowany.
|
|
|
30.05.2012, 15:06:44
Post
#12
|
|
Grupa: Zarejestrowani Postów: 479 Pomógł: 97 Dołączył: 6.09.2011 Skąd: php.net :) Ostrzeżenie: (0%) |
Musi ponieważ bez tego nie będziesz wiedział czy user jest zalogowany np
-------------------- Manual prawdę Ci powie.
|
|
|
30.05.2012, 16:13:55
Post
#13
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) |
Ale sesja jakaś musi być ? Ze względu na ciągłe poruszanie się między stronami żebym był zalogowany. Sesja a ciastko to 2 zupełnie inne rzeczy. Poza tym, ta opcja "zapamiętaj mnie" brzmi jak z poprzedniej epoki. Po coś w przeglądarkach są menadżery haseł, które rozwiązują problem "ojej, ukradli mi ciastko, cóż począć oh oh". Co do sposobu który podał greycoffey, pamiętaj że im więcej użytkowników, tym zapytania o token mogą trwać dłużej, dlatego przyda się odpowiednie cache tych danych. -------------------- Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta). |
|
|
30.05.2012, 16:18:55
Post
#14
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) |
Czyli wg tego co piszesz już mało gdzie robi się "zapamiętaj mnie" ?
Do prostych rzeczy mogę zrobić tylko sesję i wtedy mi to działa przez jakiś czas lub póki poruszam się po stronie tak ? Ale jak to ma się z wielkimi rzeczami ? Np jakieś forum. Co jeśli z jednego komputera (przeglądarki) na jednym forum logują się 2 osoby, z czego jedna spędza tam więcej czasu, więc tu taki menedżer będzie chyba trochę kłopotem skoro za każdym razem i tak muszę wybrać użytkownika z menedżera i go zalogować... |
|
|
30.05.2012, 16:21:47
Post
#15
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) |
"zapamiętaj mnie" to relikt z czasu gdy przeglądarki służyły tylko do przeglądania witryn i nie miały opcji zapamiętywania hasła. Dzisiaj też jest to używane, chyba tylko z przyzwyczajenia...
Jak masz 2 użytkowników, to chyba logiczne że muszą się za każdym razem logować. Nie ma tu znaczenia jak. -------------------- Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta). |
|
|
30.05.2012, 20:00:22
Post
#16
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) |
Mam problem z cookies, teraz już robię to zapamiętaj mnie tylko po to żeby się nauczyć
Ale do rzeczy, mam w głównym folderze plik index.php a w innym folderze login mam pliki login_form.php i login.php, ten drugi robi: Czytałem o jakimś czwartym parametrze, bo był CHYBA podobny temat na forum, ale za nic nie wiem jak go ustawić żeby to wszystko działało i w index wyświetlało mi zawartość ciasteczka. |
|
|
30.05.2012, 20:12:36
Post
#17
|
|
Grupa: Zarejestrowani Postów: 479 Pomógł: 97 Dołączył: 6.09.2011 Skąd: php.net :) Ostrzeżenie: (0%) |
-------------------- Manual prawdę Ci powie.
|
|
|
30.05.2012, 21:58:33
Post
#18
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) |
Dzięki, co prawda też tak próbowałem, ale coś nie działało, ale na przykładzie z nowym ciastkiem wszystko działa sprawnie, więc muszę przejrzeć to co zrobiłem do tej pory.
|
|
|
Wersja Lo-Fi | Aktualny czas: 25.04.2024 - 12:46 |