Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> logowanie - wydajność a bezpieczeństwo, strategia dla średniego rozwiązania (ok. 30k userów)
Alek
post 8.11.2006, 11:29:53
Post #1





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 25.06.2003
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


Mam zrobić ograniczenie dostępu do działów pewnego serwisu - dla ok 30.000 userów mających loginy i hasła. Mają oni już tabelę w MySQLu [id,login,haslo,uprawnienia,data_waznosci].

Ograniczenie dostępu ma się tyczyć działów zawierających ok 50.000 rekordów (stronicowanych, z wyszukiwarką wg kategorii itp.) gdzie jest średnio 200 żądań na godzinę o szczegóły pojedyńczej informacji. Uprawniony user z aktualną datą ważności konta ma możliwość oglądania szczegółów informacji, pozostali są przekierowywani na stronę logowania.

Przy takich warunkach jak zrobić logowanie:
1. bezpiecznie - potencjalne podrabianie cookie (?), inne zagrożenia ?...
2. wydajnie - bez niepotrzebnych sięgnięć do bazy; czy za każdym klikiem muszę sprawdzać usera pod kontem ważności i poprawności jego loginu/hasła ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
thornag
post 8.11.2006, 14:02:53
Post #2





Grupa: Zarejestrowani
Postów: 504
Pomógł: 2
Dołączył: 31.03.2006
Skąd: Londyn

Ostrzeżenie: (0%)
-----


Moze trzymaj w sesji date waznosci tego konta i ja sprawdzaj przy probie dostepu do zabezpieczonej strony, jesli data wygasla albo jej nie ma, znaczy ze user nie zalogowany wiec na strone logowania. Jednak to rozwiazanie wydaje mi sie malo eleganckie.

Moim zdaniem lepiej jest zbudowac caly mechanizm dostepu i autoryzacji. Userow trzymasz w jednej tabeli grupy w drugiej a w trzeciej powiazanie user_grupa. Tworzysz mechanizm logowania ktory zalogowana sesje trzyma w bazie danych i w ten sposob dzialasz. Zazwyczaj robi sie to tak ze tworzy sie klase UserSession odpowiedzialna za sesje uzytkownika modul Users ktory odpowiada uzytkownikowi. Przy kazdym requescie do strony UsserSession sprawdza czy jest odpowiednie ciastko czy waznosc sesji nie wygasla czy zgadza sie przegladarka, ip i co tam chcesz, jesli ciastko jest pobiera rekord z bazy uzywajac tego ciastka i inicjalizuje obiekt Usera wedlug jego id. UserSession przechowuje w sobie ten obiekt Usera wiec masz do niego dostep caly czas. Idac dalej User ma w sobie odpowiednie grupy wiec mozesz sprawdzac czy ma odpowiednia grupe do danego modulu strony. Waznoscia konta moze sie zajac UserSession w trakcie logowania. Zaleta takiego rozwiazania jest np to ze mozna w latwy i przyjemny sposob zliczyc ilosc odwiedzajacych gosci/userow itp. Co do bezpieczenstwa. Jest to co prawda cookie ktore jakos mozna wykrasc, ale ty przy tym sprawdzasz przegladarke, IP, ustawiasz odpowiedni czas trwania takiej sesji wiec powinno byc w miare bezpiecznie. Polecam do przeanalizowanie rozwiazanie Zyxa, pogoogluj napewno znajdziesz.

No to tyle smile.gif


--------------------
"Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"

Go to the top of the page
+Quote Post
marast78
post 8.11.2006, 14:16:19
Post #3





Grupa: Zarejestrowani
Postów: 176
Pomógł: 0
Dołączył: 30.11.2004

Ostrzeżenie: (0%)
-----


według mnie to nigdy nie zdarzy się tak, że naprzykład 100 uzytkowników w tej samej chwili wykona logowanie a tym samym zapytanie do bazy danych, prawdopodobieństwo tego jest dość małe, więc wydajność tutaj raczej nie będzie zagrożona, korzystajac z cookies możesz zapamiątać na jakiś okes usera i wtedy będzie się logował automatycznie, oczywiście możesz dodać sprawdzanie IP itd. dodatkowo możesz jakoś to synchroizować, stosuj Ajaxa, który dodatkowo działa jak SSH i ziwększy wydajność logowania,,,


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.07.2025 - 16:09