logowanie

Bezpieczny system logowania

Chyba nie ma osoby, która serfując po Internecie nie zetknęła by się z procesem autoryzacji (logowaniem) np: na forum, do poczty elektronicznej, konta na Facebooku itd. Zabieg ten polega na wypełnieniu formularza unikatowym loginem (najczęściej e-mailem) i hasłem uwierzytelniającym. Jeśli dane zostaną pozytywnie zweryfikowane użytkownik uzyskuje dostęp do określonych zasobów serwisu. Procesem odwrotnym jest wylogowanie, czyli usunięcie identyfikatora sesji z przeglądarki internetowej.

Hasło podane przez użytkownika podczas rejestracji konta powinno być „silne”, czyli trudne do złamania przez cyberprzestępców. Powinno składać się z dużych i małych liter, cyfr oraz znaków specjalnych. To oklepana reguła, którą należy stosować jeśli nie chcemy ułatwić roboty potencjalnemu włamywaczowi. Poza tym hasło powinno być zapisane do bazy w postaci zakodowanej (hashowanej). Do wyboru mamy kilka wewnętrznych funkcji języka PHP, np: SHA, MD5, CRYPT.

System autoryzacji, który zaprezentuję opiera się na obiektowym PHP (OOP). Do składowania rekordów wykorzystam serwer MySQL oraz uniwersalny sterownik PDO do komunikacji z bazą danych. Hasła w bazie będą hashowane podwójnie, algorytmami: sha1 i md5.

A teraz trochę praktyki. Zadanie rozpoczniemy od utworzenia tabeli users:

Kod klasy odpowiedzialnej za cały proces autoryzacji jest dosyć rozbudowany, ale nie musisz się w niego zagłębiać. Skopiuj go po prostu i zapisz pod nazwą: class.Authorization.php. W poszczególnych liniach kodu są moje komentarze i myślę, że to w zupełności wystarczy. Zakładam, że masz głowę na karku 😉

Zapisz kolejny plik pod nazwą config.php. Jak się domyślasz zawiera on dane do połączenia z bazą MySQL:

Ostatni już skrypt login.php uruchamiany jest wtedy, kiedy kliknięty zostanie przycisk „submit” formularza. Do tego skryptu dołączamy bibliotekę class.Authorization.php.

Na koniec tworzymy szablon HTML z formularzem logowania o nazwie login.phtml. Gdzieś wewnątrz sekcji BODY doklejamy skrypty: config.php  i login.php.

I gotowe. Otwórz w przeglądarce stronę login.phtml i zrób test. Tabela users jest pusta, tak więc próby zalogowania się spełzną na niczym. Możemy wprowadzić do tabeli kilka rekordów w ten sposób:

Żeby aplikacja była kompletna pasuje jeszcze do strony main.phtml  dodać przycisk „wyloguj”, który usunie sesję użytkownika i przeniesie go z powrotem do strony logowania. W tym celu można użyć funkcji LogOut() zawartej w klasie.

I to by było na tyle. Do następnego! ==>

wydrukuj temat