Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> autologowanie, checkbox z pamietaniem użytkownika
diniox
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 6.04.2008

Ostrzeżenie: (0%)
-----


Zastanawiam się jak bezpiecznie przy pomocy ciasteczka pozwolić na pamiętanie zalogowania? Chodzi mi o taką sytuacje jak jest w gmail.com czyli input text - login, input text - haslo, checkbox - pamiętaj mnie. I bardziej szczegółowo chodzi mi o obsłużenie przypadku gdy ten checkbox jest zahaczony. Trzeba strzymać u użytkownika login (bo trzeba wiedzieć kto to jest), pytanie czy warto trzymać hasło (nawet zahaczowane SHA2)? Ja sobie wymyśliłem, że będę trzymał w ciastku dwie wartości - login i hash SHA2 z loginu+'zalogowany'. dzięki temu, że hash będzie składać się z loginu i stringu zalogowany hash dla każdego użytkownika będzie inny, co trochę utrudnia podszycie się pod daną osobę (chyba, że ktoś odkryje moją zmyślną konkatacje i algorytm hashujący). Pewne jest to, że nie można trzymać nic w stylu zalogowany czt zalogowany=1 bo każdy może sobie takie ciastko zrobić i bez znajomości hasła wejść a konto. Ma ktoś jakiś pomysł jak to można zrobi, żeby było jeszcze bezpieczniejsze?
Go to the top of the page
+Quote Post
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


ID użytkownika + unikalny, losowy klucz, regenerowany przy każdym logowaniu.
Go to the top of the page
+Quote Post
diniox
post
Post #3





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 6.04.2008

Ostrzeżenie: (0%)
-----


Cytat(Crozin @ 15.08.2009, 11:40:47 ) *
ID użytkownika

Może być ten z bazy danych czy to zbyt niebezpieczne? Jeśli tak to jak go skonstruować?

Cytat(Crozin @ 15.08.2009, 11:40:47 ) *
unikalny, losowy klucz, regenerowany przy każdym logowaniu.

Jakiś przykład na klucz losowy - zwykła funkcja liczb pseudolosowych random? I ten klucz za każdym wysłaniem w ciastku trzeba podmienić w bazie danych?
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


ID użytkownika - nie wiem czym ono jest u Ciebie, ale najprawdopodobniej jest to kolejny numer o jeden większy od poprzedniego.
Klucz możesz wygenerować chociażby poprzez:
  1. $key = md5(uniqid(mt_rand(), true));
A regenerujesz go po każdym pomyślnym zalogowaniu się.

Regeneracja to wysłanie nowego ciasteczka + aktualizacja wpisu w bazie danych.
Go to the top of the page
+Quote Post
viking
post
Post #5





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Przyjmij sobie najlepiej zasadę że w cookie nie trzymasz nic oprócz id sesji i najlepiej na tym wyjdziesz. Bo i po co trzymać id użytkownika? W zależności od stopnia paranoi generowanie id co odsłonę, sprawdzanie ip + danych przeglądarki.
Go to the top of the page
+Quote Post
Crozin
post
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Sprawdzanie IP bez sensu... IP jest z reguły zmienne.
Sprawdzanie przeglądarki - może być.
Go to the top of the page
+Quote Post
viking
post
Post #7





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Zależy od zastosowań. Przecież IP nie zmienia się co 5 minut (zazwyczaj (IMG:style_emoticons/default/winksmiley.jpg) ). Jeśli sesja żyje krótszy okres ma to jak najbardziej sens.
Go to the top of the page
+Quote Post
Crozin
post
Post #8





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Co 5min nie, ale co dwa dni, gdy chciałbym móc się automatycznie zalogować - już tak.
Go to the top of the page
+Quote Post
diniox
post
Post #9





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 6.04.2008

Ostrzeżenie: (0%)
-----


Cytat(viking @ 15.08.2009, 13:28:14 ) *
sprawdzaniedanych przeglądarki.

Ale co konkretnie? User Agent czy o co chodzi?
Go to the top of the page
+Quote Post
Crozin
post
Post #10





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Dokładnie.

Chociaż to też nie jest zbyt "wygodne" dla użytkownika.

Ten post edytował Crozin 15.08.2009, 14:13:21
Go to the top of the page
+Quote Post
diniox
post
Post #11





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 6.04.2008

Ostrzeżenie: (0%)
-----


Cytat(Crozin @ 15.08.2009, 12:35:17 ) *
ID użytkownika - nie wiem czym ono jest u Ciebie, ale najprawdopodobniej jest to kolejny numer o jeden większy od poprzedniego.

Tak w bazie jest to klucz główny z autoinkrementacją. Pytanie czy warto go ujawniać czy może dodać kolumnę do bazy danych z identyfikatorem użytkownika bardziej wysublimowanym i z tego korzystać? Z drugiej strony login jest mailem więc też jest unikalny, więc może login?

Ten post edytował diniox 15.08.2009, 14:18:29
Go to the top of the page
+Quote Post
viking
post
Post #12





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Cytat(Crozin @ 15.08.2009, 13:59:53 ) *
Co 5min nie, ale co dwa dni, gdy chciałbym móc się automatycznie zalogować - już tak.

Przykładowo na allegro sesja trwa 30 minut i nie słyszałem wielkich krzyków. Na poczta.o2.pl jest się zalogowanym do zmiany IP. I tak dalej. Naprawdę zależy od sytuacji i tego jak chcemy być bezpieczni.

Go to the top of the page
+Quote Post
diniox
post
Post #13





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 6.04.2008

Ostrzeżenie: (0%)
-----


"Dokładnie" odnosi się do którego mojego postu? (IMG:style_emoticons/default/smile.gif)

Cytat(viking @ 15.08.2009, 15:18:52 ) *
Przykładowo na allegro sesja trwa 30 minut i nie słyszałem wielkich krzyków. Na poczta.o2.pl jest się zalogowanym do zmiany IP. I tak dalej. Naprawdę zależy od sytuacji i tego jak chcemy być bezpieczni.

Właśnie w moim przypadku jest gorzej bo ja chcę pamiętać użytkownika około rok czasu (to jest taki serwis, który ze swojej natury nie jest odwiedzany codziennie)
Go to the top of the page
+Quote Post
Crozin
post
Post #14





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


W przypadku sesji sprawdzanie IP jak najbardziej tak... ale nie w przypadku autologowania, które ma zapewnić nam możliwość automatycznego zalogowania się przez okres np. 20 dni.

"Dokładnie" odnosi się do ostatniego posta, przed tym postem.
Go to the top of the page
+Quote Post
diniox
post
Post #15





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 6.04.2008

Ostrzeżenie: (0%)
-----


OK, powiedzmy, że zostaje przy danych w ciasteczku - przy losowy kluczu i identyfikatorze użytkownika (user agenta nie chcę sprawdzać bo jeśli ktoś zaloguje się np po 8 miesiącach to pewnie z kołowa takich ludzi będzie miała nowszą wersję przeglądarki czyli UA będzie inny). Już wiem jak zrobić losowy klucz (dzięki Crozin) a co z identyfikatorem użytkownika? Dodam, że baza danych może być dowolnie modyfikowana więc nie ma problemu, żeby dodać jakieś nowe kolumny czy nawet tabele.
Go to the top of the page
+Quote Post
Crozin
post
Post #16





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


8 miesięcy to IMO stanowczo za dużo jak na okres ważności takiego autologowania.

Id użytkownika - no po prostu jego id... po co kombinować? I tak jest pewnie ono jawne.
Go to the top of the page
+Quote Post
diniox
post
Post #17





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 6.04.2008

Ostrzeżenie: (0%)
-----


Zgadzam się, że 8 miesięcy to dużo. Ale do tego serwisu ludzie zaglądają co 6 miesięcy w najlepszym wypadku dlatego trudno go porównywać z normalnym portalem. Taka jest niestety jego specyfika.

Jeśli chodzi o id to nie jest jawny, nigdzie go nie używam w parametrach. Dlatego mogę zamiast ściągać go z klucza głównego dodać jakiś inny unikatowy, który będzie również generowany losowo. Pytanie czy to zwiększa bezpieczeństwo?
Go to the top of the page
+Quote Post
viking
post
Post #18





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Jeszcze raz zapytam. Po co ci id_uzytkownika w cookie? Bo na siłę żeby było nie ma sensu. Wszystkie dane masz wiązane przez identyfikator sesji.
Go to the top of the page
+Quote Post
bełdzio
post
Post #19





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


to wrzuce i swoje 2gr (IMG:style_emoticons/default/smile.gif) http://www.beldzio.com/autologowanie
Go to the top of the page
+Quote Post
diniox
post
Post #20





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 6.04.2008

Ostrzeżenie: (0%)
-----


Cytat(viking @ 15.08.2009, 16:24:33 ) *
Jeszcze raz zapytam. Po co ci id_uzytkownika w cookie? Bo na siłę żeby było nie ma sensu. Wszystkie dane masz wiązane przez identyfikator sesji.

Teoretycznie da się zidentyfikować użytkownika bez id, jako, że sam klucz wygenerowany np z md5(uniqid(mt_rand(), true)) gwarantuje unikalność, więc można dać zapytanie do bazy i wiadomo, że w najlepszym wypadku zwrócony zostanie tylko jeden rekord. Dobrze kombinuję?
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.12.2025 - 16:38