Stworzyłem system logowania za pomocą sesji PHP.Czy ta sesja logowania jest bezpieczna?
Oto jak to działa:
1.), gdy użytkownik loguje się (z ważną informacją Login): Ich informacji (username
i password
) są przechowywane w sesji, wraz z kilkoma innymi kawałkami info: The Expire time
: To tylko 5 minut dodane do bieżącego czasu (więc jeśli użytkownik zaloguje się o godzinie 22:30, czas wygaśnięcia wyniesie 22:35).
2.) Na każdym widoku strony zalogowanego użytkownika: Sesja jest sprawdzana, aby sprawdzić, czy istnieje. Jeśli nie, użytkownik jest przekierowywany na stronę logowania. Jeśli sesja istnieje, sprawdza ona expire time
i porównuje ją z current time
. Jeśli numer expire time
jest większy niż current time
(użytkownik był nieaktywny przez 5 minut), to jego dane użytkownika (w sesji) są sprawdzane (w porównaniu do tych w bazie danych), a sesja Expiretime
jest aktualizowana, ale jeśli wartośćjest mniejsza następnie current time
, nie sprawdzi żadnych szczegółów, zaktualizuje sesję expire time
i pozwoli użytkownikowi na kontynuowanie. Zrobiłem to, aby zapobiec ciągłemu wysyłaniu zapytań do DB, aby oszczędzić przepustowość.
Zasadniczo po pomyślnym zalogowaniu użytkownika ich nazwa użytkownika i hasło nie będą ponownie sprawdzane na DB, dopóki nie staną się nieaktywne (pozostaną na jednej stronie) przez 5+ minut lub się wylogują.
zapomniałem wspomnieć coś chłopaki: upływa czas sesji jest faktycznie nazywa expire_time_unique_characters
($_SESSION['expire_time_'.$unique_nu]
) co oznacza, że zły człowiek będzie miał również znaleźć $unique_nu
kiedy udaje sesję ...
mam tylko to uczucie, że nie jest bardzo bezpieczne.
Ponadto, projekt ten jest dla open source (ludzie mogą zobaczyć kod źródłowy), dzięki czemu stwarza jeszcze większe ryzyko tutaj ...
może wy mi dać pewne informacje zwrotne?
Dzięki
Dlaczego przechowywać kombinację użytkownik/hasło na serwerze w trybie zwykłego tekstu? Jak to powinno poprawić bezpieczeństwo? Jeśli użytkownik/hasło jest błędne, sesja nie zostałaby ustalona w pierwszej kolejności, prawda? –
@Niklas Sesja zostanie utworzona dopiero po pomyślnym zalogowaniu. –
Następnie nie trzeba ponownie sprawdzać kombinacji logowania co kilka minut. Po prostu nie przechowuj nazwy użytkownika/hasła na serwerze. Ponadto nie przechowuj ich w bazie danych! Użyj do tego silnego algorytmu haszowania (najlepiej z rozciąganiem klucza). –