Kiedyś dawno temu tak sobie rozpisałem to co wymyśliłem:
Cytat
zdarzenia:
[ok]powitanie "Proszę się zalogować aby uzyskać dostęp do bazy"
[ok]nie_podanie_loginu_lub_hasla -> powitanie -> spróbuj_wylogować_jak_nie_to_trudno;) -> usun_klucz
[ok]wylogowanie_poprawne "Użytkownik "{user_login}" został wylogowany" -> wyloguj -> usun_klucz
wylogowanie_błędne (ktoś naciska np. przycisk wylogowania a już jest wylogowany)
klucz_istnieje
[ok]klucz_poprawny wyświetlamy komunikat "Użytkownik "{user_login}" jest już wylogowany" -> usun_klucz
[error]klucz_niepoprawny "Próba nieautoryzowanego dostępu do bazy" i -> odrzuc_ip (Musi to być bo ktoś może przelecieć wszystkie klucze a przez to zamykać uzytkownikom dostęp do serwisu. Mało tego wyłapie klucze.)
[ok]klucz_sesji_nie_istnieje -> powitanie
błędne_logowanie
[error]błędny_login "Błędny "Użytkownik" lub "Hasło"" -> odrzuc_ip
[error]błędne_hasło -> błędny_login -> odrzuc_uzytkownika (to będzie max jakieś 5 prób) -> odrzuc_ip
[ok]brak_aktywności "Brak aktywności przez co najmniej "{sekundy}" sekund, proszę się zalogować ponownie" -> wyloguj -> usuń klucz
[ok]proba_wejscia_do_systemu_bez_klucza najpierw sprawdzam przez cookie lub $_GET czy klucz istnieje i jak nie to -> powitanie
[error]proba_wejscia_do_systemu_z_błędnym_kluczem ->(wylogowanie_bledne->klucz_istnieje->klucz_niepoprawny) -> odrzuc_ip
proba_wejscia_na_zablokowane_konto
[error]błędne_hasło "Dostęp do bazy z tego IP został zablokowany, proszę spróbować ponownie {Y-m-d} o {H:i}" -> odrzuc_uzytkownika -> odrzuc_ip
[error]poprawne_dane "Dostęp do bazy z tego IP został zablokowany, proszę spróbować ponownie {Y-m-d} o {H:i}"
[error]proba_wejscia_z_zablokowanym_ip ->(próba_wejscia_na_zablokowan_konto->błędne_hasło) oraz każde odświerz powoduje -> odrzuc_ip
[error]błędne_ip ->odrzuć_ip "Błędne IP, proszę zalogować się ponownie" nie wylogowywać!
[ok]powitanie "Proszę się zalogować aby uzyskać dostęp do bazy"
[ok]nie_podanie_loginu_lub_hasla -> powitanie -> spróbuj_wylogować_jak_nie_to_trudno;) -> usun_klucz
[ok]wylogowanie_poprawne "Użytkownik "{user_login}" został wylogowany" -> wyloguj -> usun_klucz
wylogowanie_błędne (ktoś naciska np. przycisk wylogowania a już jest wylogowany)
klucz_istnieje
[ok]klucz_poprawny wyświetlamy komunikat "Użytkownik "{user_login}" jest już wylogowany" -> usun_klucz
[error]klucz_niepoprawny "Próba nieautoryzowanego dostępu do bazy" i -> odrzuc_ip (Musi to być bo ktoś może przelecieć wszystkie klucze a przez to zamykać uzytkownikom dostęp do serwisu. Mało tego wyłapie klucze.)
[ok]klucz_sesji_nie_istnieje -> powitanie
błędne_logowanie
[error]błędny_login "Błędny "Użytkownik" lub "Hasło"" -> odrzuc_ip
[error]błędne_hasło -> błędny_login -> odrzuc_uzytkownika (to będzie max jakieś 5 prób) -> odrzuc_ip
[ok]brak_aktywności "Brak aktywności przez co najmniej "{sekundy}" sekund, proszę się zalogować ponownie" -> wyloguj -> usuń klucz
[ok]proba_wejscia_do_systemu_bez_klucza najpierw sprawdzam przez cookie lub $_GET czy klucz istnieje i jak nie to -> powitanie
[error]proba_wejscia_do_systemu_z_błędnym_kluczem ->(wylogowanie_bledne->klucz_istnieje->klucz_niepoprawny) -> odrzuc_ip
proba_wejscia_na_zablokowane_konto
[error]błędne_hasło "Dostęp do bazy z tego IP został zablokowany, proszę spróbować ponownie {Y-m-d} o {H:i}" -> odrzuc_uzytkownika -> odrzuc_ip
[error]poprawne_dane "Dostęp do bazy z tego IP został zablokowany, proszę spróbować ponownie {Y-m-d} o {H:i}"
[error]proba_wejscia_z_zablokowanym_ip ->(próba_wejscia_na_zablokowan_konto->błędne_hasło) oraz każde odświerz powoduje -> odrzuc_ip
[error]błędne_ip ->odrzuć_ip "Błędne IP, proszę zalogować się ponownie" nie wylogowywać!
Znaczniki error i ok to to czy straszymy użytkownika że wystąpił błąd i po drugie czy podejmujemy środki zabezpieczające np. dodanie ip. do listy banowanych ip. Oczywiście musi zostać przekroczona określona ilość prób.
Czyli głównie chodzi o to, że przechowujemy klucz sesji danej osoby w bazie i porównujemy z tym kluczem którym przedstawia się user. Jeśli się nie zgadza to oczywiście się nie dostaje oraz jego ip dostaje się na czarną liste ip.
Co wy o tym sądzicie? Jak wy byście to rozegrali? Czyli jak zabezpieczyć i autoryzowac user'ow?