hej mam pytanie - zrobilem prosty skrypt logowania. Uzytkownik loguje sie, sprawdzam login i haslo czy pasuje w bazie danych (haslo kodowanie z sola md5 i sha1) i jesli jest okey - dodaje sesje w bazie danych (losowy ciag znakow) i dodaje ciasteczko z wartoscia tego losowego ciagu znakow. Warunek sprawdzjacy czyt ktos jest zalogowany, to sprawdzenie tego ciasteczka, czy wystepuje w bazie, jesli tak - to jaki user. Jesli sie znajduje, to do tego co znalazlo - jestes zalogowany. Jak to mozna jeszcze bardziej zabezpieczyc? (oprocz xss i sql inject typowych). Ciacho oczywiscie z httpOnly.
Używaj https://secure.php.net/manual/pl/function.password-hash.php i https://secure.php.net/manual/en/function.password-verify.php().
I pozwól PHP zająć się mechanizmem sesji, a nie wymyślaj go od nowa. https://secure.php.net/manual/en/session.configuration.php
No okey, czyli trzymac w sesji zamiast w ciasteczku sesje? I tyle w mozliwosciach zabezpieczenia? Moze jakies inne procedury sie stosuje do zabezpieczania logowania?
A co jeszcze chcesz zabezpieczać? Hash powinien być na tyle długi, żeby nie dało się go w prosty sposób odgadnąć. Poza tym sesja powinna działać na zasadzie tokenów:
1. dostajesz token na 1 zapytanie
2. Jak wykonujesz zapytanie i podany token się zgadza, to generuje Ci nowy token
3. Wróć do pkt. 1
Do realizacji powyższego najlepiej użyj natywnego mechanizmu sesji + funkcji http://php.net/manual/en/function.session-regenerate-id.php.
Dzięki! Już wdrażam
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)