• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Uwierzytelnianie użytkownika w PHP

Object Storage Arubacloud
+1 głos
201 wizyt
pytanie zadane 11 maja 2020 w PHP przez Bartx Bywalec (2,120 p.)
Witam, mam pytanie odnośnie weryfikacji użytkownika. Ja sobie wyobrażam to tak:

- Użytkownik wpisuje login i hasło

- Wpisany login i hasło są porównywane z danymi z bazy danych

- Jeśli wszystko się zgadza to login i id umieszczane są w zmiennej sesyjnej.

Nie do końca mam pewność czy tak powinno się to odbywać. Jeśli jest lepszy i bezpieczniejszy sposób to prosiłbym o wskazówki.

2 odpowiedzi

+1 głos
odpowiedź 12 maja 2020 przez JakSky Stary wyjadacz (14,770 p.)
edycja 12 maja 2020 przez JakSky
Ogólnie może być, ale diabeł tkwi w szczegółach.

Jedynie unikał bym trzymania danych w sesji. Lepiej zapisać id sesji w pliku cookie oraz w bazie danych.

Co do szczegółów:

Trzeba pamiętać o walidacji danych w formularzu.

Protokół SSL mile widziany

Wysyłać tylko metodą POST

Hasła w bazie danych powinny być hashowane

Dodatkowo najlepiej przechowywać w bazie hasło i login w formie zaszyfrowanej

Identyfikator sesji powinien mieć datę ważności

Ochrona przed CSFR

Bezpieczna możliwość przywracania hasła

Pliki cookie z flagami httponly i najlepiej  z secure

Zabezpieczenie formularza przed atakiem słownikowym, najlepiej ograniczyć liczbę prób w danym przedziale czasowym

Jak bezpieczeństwo jest ważne warto też zastosować logowanie za pomocą kodu sms. Watro też pamiętać o rejestracji kont:

Minimalna długość hasła, im dłuższe tym lepiej

Sprawdzanie czy dany login i hasło są zajęte

Aktywacja konta za pomocą email

Hasło nigdy nie powinno być emailem

Przy tworzeniu użytkownika nadać unikalny id dla tego użytkownika, powinien to być ciąg losowy a nie kolejne liczby typu: id 1, id 2 itp.
komentarz 12 maja 2020 przez OdsetekGlupoty Pasjonat (15,360 p.)
A dlaczego nie kolejne liczby? To najbardziej unikalne id.
komentarz 12 maja 2020 przez OdsetekGlupoty Pasjonat (15,360 p.)
To dalej kolejne liczby, tylko zahashowane.
komentarz 12 maja 2020 przez Bartx Bywalec (2,120 p.)

@JakSky, Mam, m. in. SSL, csrf, hash, przesyłanie przez POST. Ale o losowym id nie myślałem. Dzięki za sugestie.

komentarz 12 maja 2020 przez HaKIM Szeryf (87,590 p.)
0 głosów
odpowiedź 12 maja 2020 przez Jackoza Początkujący (410 p.)

Osobiście polecił bym Ci kurs Pana Mirosława Zelenta.
https://www.youtube.com/watch?v=Pp578w7C9hE
Tam znajdziesz to czego potrzebujesz.

komentarz 12 maja 2020 przez Bartx Bywalec (2,120 p.)
Dzięki, oglądałem już go kilka lat temu i z tego co pamiętam to pomysł na logowanie w filmie jest niemalże identyczny do mojego, no chyba że źle pamiętam.
komentarz 12 maja 2020 przez Jackoza Początkujący (410 p.)
Może warto by sobie odświeżyć. Moim zdaniem lepiej nie umieszczać loginu i id w sesji. Lepszym rozwiązaniem jest stworzenie zmiennej (oczywiście w sesji), która będzie informować o tym czy w ogóle ktoś jesteś zalogowany czy nie.
komentarz 13 maja 2020 przez Bartx Bywalec (2,120 p.)
Ok, ale u mnie id i login w sesji jest tak naprawdę potrzebny tylko do wyświetlania informacji w interfejsie, typu zalogowany/niezalogowany, a przy każdej akcji która wymaga bycia zalogowanym sprawdzam z bazą danych czy się wszystko zgadza.
komentarz 13 maja 2020 przez Jackoza Początkujący (410 p.)
Może Ci napiszę jak to wygląda u mnie.
Wpierw użytkownik podaje login i hasło, a potem dane ze zmiennej POST są sprawdzane z bazą danych. Oczywiście jak nie znasz hasła to nie wejdziesz na stronę (u mnie nie ma takiej opcji, żeby wejść na stronę jako gość, ponieważ jest to strona dla określonych osób).
Po prawidłowym zalogowaniu wczytuje do sesji "nick użytkownika", uprawnienia oraz zmienną z informacją o zalogowaniu użytkownika, a potem dostaje się na stronę główną i jestem przywitany przez stronę (Witaj, "nick użytkownika").
Oprócz tego każdy użytkownik posiada swoje uprawnienia: superadmin, admin lub user i w zależności od tych uprawnień ma lub nie ma do pewnych rzeczy dostępu.
Każde strony i podstrony są zabezpieczone przed bezpośrednim wejściem bez logowania oraz, gdy użytkownik nie ma do tego uprawnień.
komentarz 17 maja 2020 przez Bartx Bywalec (2,120 p.)
Dzięki za komentarz, u mnie wygląda to identycznie z tym, że jeszcze używam token uwierzytelniający aby połączenie się ze strona było niemożliwe przez zewnętrzny formularz.

Podobne pytania

+1 głos
0 odpowiedzi 203 wizyt
0 głosów
0 odpowiedzi 70 wizyt
pytanie zadane 30 grudnia 2020 w PHP przez michal_php Stary wyjadacz (13,700 p.)
0 głosów
1 odpowiedź 653 wizyt
pytanie zadane 20 września 2017 w PHP przez miras_mw Nowicjusz (140 p.)

92,579 zapytań

141,429 odpowiedzi

319,657 komentarzy

61,962 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...