Jakub Rajchowiak

Jakub Rajchowiak właściciel,
Rajchowiak.com

Temat: logika logowania

ten odcisk przegladarki fajna sprawa i ciekawy temat. choc na pewno tez do przejscia bo gdzies to przechowywac trzeba, jesli w sesji to mozna ja przejac jak to wczesniej ktos zauwazyl. Ale na pewno to ciezej rozgryzc niz przechowywanie id usera.

Ja obecnie mam porownanie cookie z id usera a w sesji mam IP usera.

Neo resetuje sie chyba co 24h, sam mam i nie mam z tym problemu.

Co do resetu sesji wystarczy funkcja: session_regenerate_id() ??

konto usunięte

Temat: logika logowania

Jakub, o zabezpieczeniu sesji przeczytasz tutaj: http://pl.wikibooks.org/wiki/PHP/Sesje (a dokładniej o obronie przed Session Fixation oraz Session Hijacking) - to jednak nie wszystkie zagrożenia od strony sesji.

Co do browser fingerprinting, o to mi wcześniej chodziło, ale nie pamiętałem adresu ani nazwy :-) Wystarczy zapamiętać dane zalogowanego usera, gdziekolwiek - byle w bezpiecznym miejscu, a później tylko porównać te wartości i jeśli nie pasuje to prosić o ponowne zalogowanie.
Adam Bąk

Adam Bąk Programista

Temat: logika logowania

Ja zapamiętuje w swoich projektach ip, sesje itp w bazie danych nie wiem czy to jest dobre rozwiązanie patrząc z perspektywy czasu... Jak sądzicie ?? Na razie tak robię... Ale czy to jest dobry wybór ?? Acha, te dane będę teraz wykorzystywał w pisaniu statystyki dla strony.
Jakub Rajchowiak

Jakub Rajchowiak właściciel,
Rajchowiak.com

Temat: logika logowania

KAmil, dzieki za linka. Akurat przecyztalem i wrzucilem tylko w jedno miejsce regenerate_id ale w sumie niepotrzebnie chyba. Stosuje .htaccess i wlasciwie doklejanie ?PHPSESSID="..." nie przejdzie ale lepiej dmuchac na zimne:)

Tak sie tez zastanawialem nad trzymaniem w bazie pewnych rzeczy jak napisal Adam, ale teraz pytanie, czy wtedy przy kazdym odswiezeniu strony nie musimy odpytywac bazy?? taki mechanizm strasznie nam zwiekszy obciazenie bazy danych przy wiekszej ilosci uzytkownikow.

konto usunięte

Temat: logika logowania

może coś takiego pomoże...

/*
SecureSession class
Written by Vagharshak Tozalakyan <vagh@armdex.com>
Released under GNU Public License
*/

Nie pamiętam gdzie można znaleźć tą klasę, ale chyba na phpclasses.org
Adam Bąk

Adam Bąk Programista

Temat: logika logowania

Jakub Rajchowiak:
..., ale teraz pytanie, czy wtedy przy kazdym odswiezeniu strony nie musimy odpytywac bazy?? taki mechanizm strasznie nam zwiekszy obciazenie bazy danych przy wiekszej ilosci uzytkownikow.

Też się nad tym zastanawiałem Kuba, zapewne zwiększy obciążenie, ale dla strony bez logowania czyli dla samej statystyki wybrnąłem w następujący sposób że tylko dla strony głównej napisałem zapytania do bazy, ponieważ wiadomo jest że jak ktoś wejdzie na stronę to pierwszy raz wykona się zapytanie nasze do bazy, chociaż wiem że to nie jest za dobry pomysł, muszę pomyśleć jak inaczej zrobić ...Adam Bąk edytował(a) ten post dnia 28.09.10 o godzinie 00:03

konto usunięte

Temat: logika logowania

Zapytanie do bazy bedzie wzglednie proste, nie laczysz miliona tabel.
Jak bedziesz mial poprawnie poustawiane indexy to nie powinno byc problemu.
Generalnie sugestia jest taka zeby sprawdzac co chwila czy zalogowany uzytkownik "to ten". I w razie czego, sprawdzasz tylko tych co sie zalogowali, guestow nie musisz. Dopoki nie mowa o 1000 uzytkownikach zalogowanych naraz, to chyba nie jest zle :)

Aczkolwiek jesli poruszasz sie po stronach - przegladasz newsy dla przykladu - to w sumie nie musisz. Dopoki uzytkownik nie robi czegos co jest istotne - dodawanie komentarza, postu, edycja danych konta (gdzie mozesz poprosic o ponowne zalogowanie dla pewnosci).

Allegro - przy edycji konta, prosi Cie o ponowne zalogowanie, mimo iz chwile wczesniej wlasnie to uczyniles :)
Ebay - domyslnie niby Cie pamieta i mowi "witaj Zenek" i wszystko jest fajnie, ale jak chce cos zalicytowac to prosi Cie o zalogowanie by sie upewnic ze Ty, to Ty. Oczywiscie od tego momentu Cie juz pamieta (do konca dnia).Andrzej Winnicki edytował(a) ten post dnia 28.09.10 o godzinie 00:10
Jakub Rajchowiak

Jakub Rajchowiak właściciel,
Rajchowiak.com

Temat: logika logowania

Tez tak mysle, ze jak Andrzej napisal najlepszym rozwiazaniem jest polaczenie tego wszystiego.

- Zatem podczas logowania zapisac wszystko w sesji, cookie i bazie,
- podczas normalnego uzytkowania serwisu przechowywac wszystko tylko w sesji i cookie i to sprawdzac
- w momencie wykonania jakichs operacji przez usera pobierac dodatkowo z bazy informacje
- jesli sie cos nie zgadza wykasowac wszystkie dane i przekierowac do logowania LUB poprosic o potwierdzenie ponowne tozsamosci.

Wydaje mi sie, ze takie rozwiazanie niweluje problem czestych odpytan do bazy, bo wlasnie niby zapytanie jest proste ale jesli bedzie 1000 lub wiecej userow zalogowanych (a kto wie jak sie rozrosnie kiedys pisana aplikacja:) to moze byc problem.

Problem nastepuje wtedy gdy forma dzialania aplikacji polega tylko na interakcji z userem, czyli jest ciagle niebezpieczenstwo i byloby konieczne ciagle odpytywanie bazy. Co wtedy?? Jak myslicie?

Z tego co przejrzalem klasa, ktora zaproponowal Dominik tworzy wlasnie browser fingerprinta i odnawia session id za kazdym razem gdy sesja jest sprawdzana.Jakub Rajchowiak edytował(a) ten post dnia 28.09.10 o godzinie 10:27

konto usunięte

Temat: logika logowania

Ja osobiście trzymam dane o zalogowanym użytkowniku, hash przeglądarki etc w cache. Podczas logowania wszystkie dane są pobierane i zapisywane w cache z limitem życia. To znaczy, że po przekroczeniu limitu nieaktywności, cache jest usuwane, a użytkownik wylogowany. System nie pozwala przy tym zalogować się kilka razy i mieć aktywną sesję. Dzieje się tak, ponieważ, po pierwszym logowaniu w tabeli sesji w bazie, tworzony jest rekord dla użytkownika, który istnieje tam, aż do momentu usunięcia konta. Podczas tego procesu zmieniana jest tylko wartość sesji i hash fingerprint.

Zatem baza nie jest zbytnio obciążana, a system w miarę bezpieczny, wszak wiadomo, że na jednego speca od bezpieczeństwa znajdzie się 100, którzy potrafią złamać jego zabezpieczenia. Wydajność takiego rozwiązania jest moim zdaniem dość spora, zważywszy, że dziennie z systemu korzysta 100 000 ludzi.
Należy przy tym pamiętać, aby cache nie był dostępny z poziomu przeglądarki, najlepiej wywalić go gdzieś wyżej od "public_html" i dodatkowo nie pozwolić na odczyt innym użytkownikom/grupom jak ta, która uruchamia skrypt.

Jeżeli coś jest niejasne to pytajcie. Nie mogę przesłać kody, gdyż mam podpisane NDA na całą aplikację.Dominik Łabudziński edytował(a) ten post dnia 28.09.10 o godzinie 13:52

konto usunięte

Temat: logika logowania

Pytanie - po co dane typu ip , session_life itp. chcecie gromadzić w bazie czy cache?
Czemu nie zapisujecie ich w sesjach ? Wiadomo że dane z cookie da się poznać/zmienić
ale danych z sesji już nie. Tak więc dla danego SID zapisując $_SESSION['ip'] ,['agent'], ['life'] dostajemy ten sam poziom bezpieczeństwa co w przypadku zapisu tych danych w db z tą różnicą że zyskujemy na wydajności. Co wy o tym myślicie ?
Adam Bąk

Adam Bąk Programista

Temat: logika logowania

Nio tak, ale np. jak klient chce statystyki tzn, licznik gości, ile osób jest onlinie, o której godzinie jest najwięcej wyświetleń strony...???
To wtedy chyba jest prościej dodać pole ip, i session_id i dodawać ?? Czy ja coś błędnie rozumuje ??
Wiem że są darmowe skrypty do tego ale chce coś sam napisać swojego, a poza tym znajomy korzystał z darmowych skryptów to były reklamy na stronach.
Jakub Rajchowiak

Jakub Rajchowiak właściciel,
Rajchowiak.com

Temat: logika logowania

Pawel i tutaj wlasnie jest moje pytanie na temat tej sesji. Poniewaz jestem zielony z lamania zabezpieczen pytam sie Was tutaj. Czy po "przejeciu" sesji jakos osoba, ktora tego dokonala nie moze zmienic tych danych na przyklad podkladajac swoje IP w sesji?

konto usunięte

Temat: logika logowania

Nie , sesje != ciastka :-)

@Adam - ile osób jest online to wyjdzie np z tabeli user w której będzie pole last_visit.
+ statystyk się tak nie robi (nie wciska w kod od logowania itp.) takie rozwiązanie niosło by późniejsze komplikacje (zapis wersji wtyczki flash, rozdzielczości monitora itp). Dla statystyk najlepiej zrobić osobny plik/kod odpalany przez js/obrazek. (tak robi np. google analytics)Paweł Makowski edytował(a) ten post dnia 28.09.10 o godzinie 15:26
Tobiasz Szlęk

Tobiasz Szlęk SEM, SEO, PPC -
zabawy słowem
(kluczowym).

Temat: logika logowania

Kamil Brenk:
w neo ip zmienia się co jakiś czas z tego co pamiętam? więc co kilkanaście minut kolejne logowanie nikomu nie powinno przeszkadzać...

To żart? Mnie by szlag trafił. :)
Adam Bąk

Adam Bąk Programista

Temat: logika logowania

Dzięki Paweł, ja właśnie staram się tego nauczyć, dzięki za wskazówki :)
Adam Bąk

Adam Bąk Programista

Temat: logika logowania

Tobiasz S.:
Kamil Brenk:
w neo ip zmienia się co jakiś czas z tego co pamiętam? więc co kilkanaście minut kolejne logowanie nikomu nie powinno przeszkadzać...

To żart? Mnie by szlag trafił. :)

W neo ip się zmienia nie to że co jakiś czas ale przy łączeniu się z neo, ja mam ruther który non-stop chodzi, to wtedy ip jest takie same dopóki nie zrobię restartu ruthera.
Tobiasz Szlęk

Tobiasz Szlęk SEM, SEO, PPC -
zabawy słowem
(kluczowym).

Temat: logika logowania

Z tym się zgodzę. Ja odniosłem się do logowania co kilkanaście minut - wiem, że dla użytkowników sporym problemem jest, gdy strona nie ma możliwości zapamiętania logowania na dzień/dwa tygodnie/wieczność. Logowanie co kilkanaście minut powoduje frustrację. :)
Ja patrzę na to od strony usability.
Adam Bąk

Adam Bąk Programista

Temat: logika logowania

A spoko, źle zrozumiałem :) Nio też z tym się zgadzam że przy logowaniu dobrze by było zapamiętanie userów...
Jakub Rajchowiak

Jakub Rajchowiak właściciel,
Rajchowiak.com

Temat: logika logowania

co do neo to tak jak napisalem ona sie chyba automatycznie resetuje co 24. Przynajmniej kiedys tak bylo. A jesli zmienili to ja i tak musze czasem resetnac by skasowac limit megavideo:)

co do usability, to zapamietywanie logowania jest mozliwe z tego co doszlismy lecz nie powinno sie temu wierzyc robiac jakies powazniesze operacje w aplikacji tylko wtedy ponownie wymagac zalogowania.
Jakub L.

Jakub L. Programista

Temat: logika logowania

Wojciech Soczyński:
Jest taki projekt który researchuje taką metodę identyfikacji, która się nazywa browser fingerprinting. Okazuje się , że każdy z nas ma unikalne ustawienia przeglądarki itp rzeczy i po tym można

Szczególnie ci używający przeglądarek fabrycznie zainstalowanych na telefonach, albo środowisko faszystowskiego korpo w którym user nie może niczego sobie ustawić, albo maszyny od sztancy zbootowane z tej samej płytki albo sieciowego romu albo jeszcze inne homogeniczne środowisko.
identyfikować jednoznacznie użytkowników. Mogło by to być fajne uzupełnienie dla ciastek albo nawet ich zastępnik...

Przypuszczam że wątpię.



Wyślij zaproszenie do