![]() |
![]() ![]() |
![]() |
![]()
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 ? |
|
|
![]()
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). |
|
|
![]()
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 ?
|
|
|
![]()
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. |
|
|
![]()
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ć ?
|
|
|
![]()
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.
|
|
|
![]()
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 ? |
|
|
![]()
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 |
|
|
![]()
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 ?
|
|
|
![]()
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.
|
|
|
![]()
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.
|
|
|
![]()
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.
|
|
|
![]()
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). |
|
|
![]()
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ć... |
|
|
![]()
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). |
|
|
![]()
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. |
|
|
![]()
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.
|
|
|
![]()
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: 19.07.2025 - 19:38 |