Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Jak zabezpieczyć logowanie
Forum PHP.pl > Forum > Przedszkole
lobopol
Czy ktoś mógłby mnie nakierować na tutorial w którym przedstawiono by mechanizm logowania z zabezpieczeniem, że jeżeli ktoś się loguje z innej przeglądarki/adresu ip to następuje wylogowanie (usunięcie sesji) we wszystkich pozostałych przeglądarkach/adresach?

Czyli sytuacja wygląda tak loguje się używając firefoxa, coś robię. wchodzę na stronę przez opere (loguje się oczywiście na to samo konto) i następuje wylogowanie w firefoksie.
DiH
Ja zrobiłbym to tak:
Przy logowaniu uzytkownika do bazy dopisujemy godzinę jego zalogowania. Następnie dodajemy tą godzinę do zmiennej, lub przekazujemy w adresie. Potem na stronie dodajemy if'a sprawdzającego czy godzina z bazy jest identyczna z tą w zmiennej. Jeżeli jest inna, to znaczy, że ktoś inny zalogował się na to konto.

lobopol
W łatwy sposób można się pod kogoś podszyć, ale już mam pomysł zapiszę w bazie ip logowania i przeglądarkę i będę sprawdzał czy się nie zmienia.
emtiej
A o sesjach i cookies to wy nie słyszeliście?

Cytat
Ja zrobiłbym to tak:
Przy logowaniu uzytkownika do bazy dopisujemy godzinę jego zalogowania. Następnie dodajemy tą godzinę do zmiennej, lub przekazujemy w adresie. Potem na stronie dodajemy if'a sprawdzającego czy godzina z bazy jest identyczna z tą w zmiennej. Jeżeli jest inna, to znaczy, że ktoś inny zalogował się na to konto.


Albo ta sama osoba wylogowała się, bo była w kafejce i przyszła do domu, po czym znów chciała się zalogować...

Cytat
W łatwy sposób można się pod kogoś podszyć, ale już mam pomysł zapiszę w bazie ip logowania i przeglądarkę i będę sprawdzał czy się nie zmienia.


I ta sama sytuacja jak i powyżej... użytkownicy neostrady mają zmienne IP, a wielu użytkowników takich jak ja np. korzysta z kilku przeglądarek

http://webhosting.pl/Jak.zrobic.w.PHP.system.logowania

Naturalnie logowanie na samych sesjach i cookies nie są całkowicie bezpieczne, ale na pewno to lepsze niż te wasze metody biggrin.gif. Większe serwisy internetowe, aby zapewnić bezpieczeństwo stosują protokoły ssl(czyli protokoły szyfrowane, darmowy to openSSL - więcej info w manualu php)
DiH
Cytat
Albo ta sama osoba wylogowała się, bo była w kafejce i przyszła do domu, po czym znów chciała się zalogować...

Tyle, że przecież ten if o którym pisałem nie eliminowałby możliwości zalogowania się, tylko podczas próby zrobienia czegokolwiek na "starszym" logowaniu, użytkownik zostałby wylogowany, bo jego data nie zgadzałaby się z tą w bazie. A co do sesji... cóż, czasami trudno zauważyć najprostrze rozwiązanie.

Pozdrawiam
Blame
Cytat(emtiej @ 31.01.2010, 14:42:50 ) *
I ta sama sytuacja jak i powyżej... użytkownicy neostrady mają zmienne IP, a wielu użytkowników takich jak ja np. korzysta z kilku przeglądarek

IMHO nie masz racji. Zabezpieczenia logowania powinny chronić przed tzw. przechwyceniem sesji i zapisywanie ip i przeglądarki logującego się użytkownika i sprawdzanie ich na bieżąco jest na to najlepszym sposobem. Piszę w ten sposób bo wydaje mi się, że chcecie jakimś cudem zezwolić na logowanie tylko prawowitemu użytkownikowi nawet jeśli inna osoba zna jego hasło a to że ktoś go nie potrafi upilnować, wszędzie ma takie same i nigdy go nie zmienia to już nie problem administratora/webmastera.
lobopol
Ok cały mechanizm logowania mam zrobiony, teraz staram się tylko wyeliminować problem z 2 osobami zalogowanymi na jedno konto, ale jak już napisałem zrobię to mniej więcej tak:
user 1 loguje się zapytanie do bazy jaki był ostatni wpisany ip i przeglądarka dla tego usera, jeżeli jest inne to kolejne zapytanie zamieniające przeglądarkę i ip na te aktualne
user 1 jest zalogowany i na każdej stronie leci zapytanie do bazy czy nie zmieniła się przeglądarka albo ip, jeżeli tak to wylogowuje go z konta
user 2 loguje się na konto sprawdzenie ip/browser i zamiana
user 1 przy sprawdzeniu zostaje wylogowany
scorpion_1982
Cytat(emtiej @ 31.01.2010, 14:42:50 ) *
A o sesjach i cookies to wy nie słyszeliście?


http://webhosting.pl/Jak.zrobic.w.PHP.system.logowania



Naturalnie logowanie na samych sesjach i cookies nie są całkowicie bezpieczne, ale na pewno to lepsze niż te wasze metody biggrin.gif . Większe serwisy internetowe, aby zapewnić bezpieczeństwo stosują protokoły ssl(czyli protokoły szyfrowane, darmowy to openSSL - więcej info w manualu php)


emtiej a słyszałeś o bezpieczeństwie skryptów pisanych pod bazę sql questionmark.gif, jeśli byś słyszał to nie podał byś tak głupiego kursu który nie jest nawet podstawami, nie będę pisał dlaczego bo jeśli ktoś zna php dla niego jest to oczywiste.





Tego kursu nie polecam, ani początkującym ani dzieciom. nadaje się tylko dla osób które chcą poświecić stronę do testów, to proszę bardzo.

Kolejna twoja wypowiedz dotycząca:

Cytat(emtiej) *
Naturalnie logowanie na samych sesjach i cookies nie są całkowicie bezpieczne


Jak masz zamiar napisać logowanie nie używając sessji ?, sesje nie są bezpieczne ale jeśli naniesie się odpowiednie poprawki fix itp. to stają się dość dobrym zabezpieczeńiem, cookies napewno nie jest bezpieczeństwem bo jest Clien-Side czyli jest wysyłany i odbierany od klienta, dlatego opierając logowanie na sesji. mamy większe bezpieczeństwo.

2. Sesje zawierają kilka błędów jak np. numer który ma być losowy nie do końca nim jest.

3. Standardowo mają długi okres wygasania co niesie niebezpieczeństwo.

4. Jeśli ktoś ukradnie nam numer sesji na której jesteśmy zalogowani to może wejść na konto nie podawając danych.

Dlatego należy wymusić wygasanie sesji co kilka min, w serwisach przy zmianie hasła należy uwzględnić by było wymagane stare hasło by można było wprowadzić nowe. itp.

Nie będę się rozpisywał na ten temat bo na temat bezpieczeństwa można by napisać konkretny artykuł be nawet książkę.

Pozdrawiam.

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.