Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Autologowanie
Forum PHP.pl > Forum > Przedszkole
maly_pirat
Witam, chce stworzyć auto logowanie działające na zasadzie: Zalogujesz się poprawnie do serwisu, to auto logowanie automatycznie samo się uruchamia, czyli bez żadnych checkboxów, chcesz czy nie, autologowanie będzie włączone.

Fragment kodu, odpowiadającego za autologowanie:
Kod
$haslo = md5($_POST['haslo'];

setcookie("sid", $row['uzytkownikID'].":".$haslo, time()+$cos * 60 * 60 * 24 * 360));


sid - to sesja, którą rozpocząłem (session_name, session_start)
$row['uzytkownikID']; - to ID użytkownika zalogowanego pobranego
$haslo - haslo, które wpisał w formularzu logowania ($_POST)


Jednak mam parę pytań odnośnie cookies, auto logowania;

a) $cos - co tutaj mam wstawić? liczbę 24 , czy co?
cool.gif Czy powyższy kod (a raczej wycinek) jest bezpiecznym kodem, nie grozi mi atak XSS ? itp?
c) Czy zmienna $hasło , która przechowuje hasło użytkownika powinna być bardziej zakodowana ? np. md5 + inne kodowania? czy md5 starczy?
d) Czy powyższy wycinek kodu spowoduje efekt automatycznego logowania?
Ponieważ w formularzu logowania nie będzie pytania "Zalogować auto" tylko chciałbym tak napisać skrypt aby WYMUSZAŁ logowanie auto.
Leopard
a ) w tym przypadku można powiedzieć, że $cos to ilość lat ważności ciastka bo "time()+60*60*24*365" to rok a mnożysz jeszcze przez $cos.
b ) nie wiem guitar.gif
c ) ja dopiero się uczę i na razie ograniczam się do zwykłego md5 ale podobno nie jest to wystarczające zabezpieczenie.
d ) nie, powyższy wycinek ustawia tylko plik cookie. Jak chcesz zrobić automatyczne logowanie to nie wystarczy wysłać ciastko z danymi ale przy wejściu na stronę musisz sprawdzić czy użytkownik ma ciacho i czy podane w nim wartości zgadzają się z tymi w bazie, wtedy go zalogować.
DevonSix
Witam.

time()+$cos * 60 * 60 * 24 * 360
To wg mnie możesz zupełnie wyrzucić, no chyba że chcesz autowygasanie ciastka.

2. Co do bezpieczeństwa, to jest raczej bezpiecznie biggrin.gif.

3. md5 starczy smile.gif

4. Dopóki nie będziesz sprawdzał egzystencji ciasteczka zrobionego tym kodem to nic się nie stanie biggrin.gif

Pozdrawiam
DevonSix
Spawnm
//Czy powyższy kod (a raczej wycinek) jest bezpiecznym kodem, nie grozi mi atak XSS ? itp?
aby XSS się wykonał musiał byś dać echo bo XSS to javascript .

pomysł z ciastkami imho bardzo słaby ,
user szybko dojdzie że używasz samego md5 co w przypadku przechwycenia czyjegoś ciastka zakończy się tragicznie.
DevonSix
Cytat(Spawnm @ 12.04.2009, 11:29:50 ) *
pomysł z ciastkami imho bardzo słaby ,
user szybko dojdzie że używasz samego md5 co w przypadku przechwycenia czyjegoś ciastka zakończy się tragicznie.


;o Jak hasło będzie 2/3 literkami to tak no ale jak user da 8 znakowe z literami i cyframi to i tęczowe tablice za bardzo nie pomogą winksmiley.jpg
Spawnm
dla tęczowej to bez znaczenie , mowa raczej o brutal force .
A zakładanie że wszyscy dają hasła typu A3$^vVe3[]X jest raczej naiwnością .
DevonSix
smile.gif No dobra, to co niby użyć zamiast md5? Niby można powydziwiać w stylu md5(crypt(md5(md5('asd')))) ale nie wiem czy to dobry pomysł jest?
erix
Cytat
Jednak mam parę pytań odnośnie cookies, auto logowania;

Najprościej byłoby session_set_cookie_params" title="Zobacz w manualu PHP" target="_manual i ustawić czas na odpowiednio długi. winksmiley.jpg Do tego jeszcze jakiś losowy hash w sesji i dodatkowym ciastku, aby zweryfikować, czy ktoś SID-a nie wstrzyknie.
bełdzio
http://www.beldzio.com/autologowanie
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.