Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Bezpieczna autoryzacja bez użycia sesji
Forum PHP.pl > Forum > PHP
pakonet
Potrzebuję zbudować własny system autoryzacji użytkowników. Dane kont przechowywane będą w bazie MySQL. Po zalogowaniu się użytkownik będzie dostawał ciasteczko w następującej postaci:

Kod
login|2005-05-12-12:23|k4dio9fd3jk9h4jd93kdn3oia1


Gdzie literki to byłaby hash MD5 dla następującego ciągu znaków:

Kod
login|2005-05-12-12:23|192.168.0.1|haslo


Przy weryfikacji pobierałbym po prostu login i datę z cookie, adres IP użytkownika oraz hasło z bazy i sprawdzał czy hash MD5 dla tych danych byłby zgodny z zapisanym w bazie. Co sądzicie o takim rozwiązaniu? Na ile jest to bezpieczne?

Druga rzecz dotyczy dostępu do bazy danych. Dotąd do łączenia z bazą MySQL korzystałem z PHPLIB. Jak sądzicie, czy biblioteka ta sprawdzi się także w większym projekcie? A jeśli nie, to co w zamian? Pear, a może kodowanie wszystkiego ręcznie?

Z góry dzięki za pomoc smile.gif

Paweł
nospor
a co jeśli użytkownik wyłączy ciasteczka? - lipa
pakonet
Cytat(nospor @ 2005-05-27 11:39:45)
a co jeśli użytkownik wyłączy ciasteczka? - lipa

Tak jak patrzę to większość osób ma jednak ciasteczka włączone. Bez nich nie można się zalogować w większości dużych serwisów typu Allegro, Gazeta, itp.

Ale może powinienem przekonać się do sesji?

A no i pytanie czy jeśli znamy większą część stringa na podstawie którego wygenerowany był hash MD5 (login, data, adres IP), to nie ułatwia to w jakiś sposób wyciągnięcia z takiego hasha hasła?
nospor
Oj chyba powinieneś. Co masz przeciwką sesją? One wiele rzeczy za ciebie zrobią. W sesji możesz przenosić dodatkowo inne dane bez żadnych dodatkowych nakladó programistycznych
Pigula
problem bedzie jak osoba laczy sie za pomoca modemu i za kazdym razem ma inne ip. pozatym co z tego ze ma wlaczone ciasteczka jak moze je usunac zmienic przegladarke sformatowac dysk czy kupic nowego kompa chyba ze twoja strona bedzie krotki okres w sieci a potem ja zamkniesz na jakies 2-3 miesiace moze i by sie sprawdzila (nie wliczajac modemowcow)
pakonet
Cytat(Pigula @ 2005-05-27 12:06:47)
problem bedzie jak osoba laczy sie za pomoca modemu i za kazdym razem ma inne ip

No to prawda, ktoś może np. otworzyć jakiś formularz na mojej stronie i wypełniać go offline. Po ponownym połączeniu musiałby się jeszcze raz logować. Więc może lepiej zastąpić adres IP jakimś parametrem w stylu HTTP_USER_AGENT? Chodzi mi o to, żeby nawet po przechwycieniu wartości ciasteczka nie można było się zalogować z innego komputera. (Acha, raczej nie przewiduję opcji typu "Zapamiętaj moje hasło" - ciasteczko ma być ważne jedynie przez 2 godziny i usuwane przy zamknięciu przeglądarki.)

Czytając inne wątki na forum znalazłem radę, żeby hasło kodować podwójnie - najpierw osobno, a potem jeszcze raz razem z innymi parametrami. Zawsze będzie trudniej odszyfrować smile.gif.

Będę się chyba musiał przekonać do sesji. Pokombinuję żeby rozwiązać to tak, żeby sesja tworzona była dopiero po zalogowaniu się. Chodzi mi o to, żeby nie utrudniać wyszukiwarkom indeksowania mojej strony (słyszałem że np. Google opornie indeksuje strony z parametrem session_id).

A co z moim pytaniem dotyczącym dostępu do bazy? Czy mogę polegać na PHPLIB, czy warto nauczyć się czegoś innego?

No i czy bawić się w sesje, jeżeli i tak nie chcę korzystać z URL rewrite (a jedynie z sesji opartych na cookies)?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.