![]() ![]() |
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?
|
|
|
|
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.
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 6.04.2008 Ostrzeżenie: (0%)
|
ID użytkownika Może być ten z bazy danych czy to zbyt niebezpieczne? Jeśli tak to jak go skonstruować? 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? |
|
|
|
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: A regenerujesz go po każdym pomyślnym zalogowaniu się. Regeneracja to wysłanie nowego ciasteczka + aktualizacja wpisu w bazie danych. |
|
|
|
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.
|
|
|
|
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ć. |
|
|
|
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.
|
|
|
|
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.
|
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 6.04.2008 Ostrzeżenie: (0%)
|
|
|
|
|
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 |
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 6.04.2008 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. 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 |
|
|
|
Post
#12
|
|
|
Grupa: Zarejestrowani Postów: 6 381 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%)
|
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. |
|
|
|
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)
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) |
|
|
|
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. |
|
|
|
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.
|
|
|
|
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. |
|
|
|
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? |
|
|
|
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.
|
|
|
|
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
|
|
|
|
Post
#20
|
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 6.04.2008 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. 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ę? |
|
|
|
![]() ![]() |
|
Aktualny czas: 26.12.2025 - 16:38 |