Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]sesje w php i system logowania
Forum PHP.pl > Forum > PHP
faran
Witam,
Piszę skrypt mający na celu logowanie użytkowników...
Jeśli wprowadzone dane są poprawne to tworze zmienną sesyjną taki sposób:
Kod
$_SESSION['uzytkownik'] = $login;

Zmienna $login to nazwa użytkownika która się poprawnie zalogowała. Jeśli chcę sprawdzić czy użytkownik jest zalogowany to sprawdzam czy istnieje zmienna $_SESSION['uzytkownik'].
W cookie widzę że jest tworzona taka wartość:
Kod
Nazwa cookie: PHPSESSID
Wartość: 59c890a08ec4832fb6468cc5d90cd68f

Czy nie jest to zbyt mało bezpieczne, bo przecież można generować ciastko z przypadkową wartością i kiedyś może się udać. Co prawda prawdopodobieństwo trafienia jest bardzo małe, ale minimalne zawsze jest.
Czy da się jakoś generować cookie o wartosci:
Kod
nazwa_uzytkownika: 59c890a08ec4832fb6468cc5d90cd68f

Wydaje mi się, że było by to znacznie bezpieczniejsze bo wtedy zmienna sesyjna była by przyporządkowana użytkownikowi
vokiel
W ciastku jest przechowywany identyfikator sesji, nie ma w nim danych, które trzymasz w sesji, dane są na serwerze. Oczywiście dobrym zwyczajem jest stosowanie dodatkowych zabezpieczeń (adres IP, ciąg określający przeglądarkę etc).

Ten ciąg, jak zauważyłeś ma 32 znaki, biorąc pod uwagę ilość liter i cyfr w alfabecie (z uwzględnieniem wielkich i małych) to mamy ich mniej więcej 58, zatem kombinacji jest 32^58 = 1,9892929456391465686215289925873e+87. Czyli prawdopodobieństwo, że ktoś wygeneruje taki identyfikator sesji, który akurat istnieje jest bardzo znikome, a w połączeniu z zabezpieczeniem na IP i przeglądarkę prawie niemożliwe do złamania.
faran
Jest jakiś sposób na wylogowanie pojedynczego użytkownika bez jego udziału ?. Np. ktoś pisze obraźliwe teksty to ja wtedy usuwam zmienną sesyjną znajdującą się na serwerze tą do która jest jemu przydzielona...
vokiel
Masz na serwerze katalog tempowy (/tmp) w którym, przy domyślnej konfiguracji, są pliki np: sess_1b5b95d1dba23b0ee3a963e01fe55dd2, usuniesz plik, zamkniesz sesję danego użytkownika
darko
Ok tylko jak już chcesz moderować to warto zastanowić się czy samo wylogowanie wystarczy? Jaki problem zalogować się ponownie? To samo dotyczy filtrowania adresów IP, a co jeśli ktoś siedzi na neostradzie i ma router? Jak problem zrobić restart routera i zmienić IP? Chyb a najlepiej byłoby zrobić mechanizm blokowania kont użytkowników i przy logowaniu sprawdzać czy konto nie jest zablokowane.

ps.

ostatecznie nawet i blokowanie kont da się obejść - można przecież założyć zupełnie nowe konto i dalej bluzgać na forach...
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.