Login rendszer készítése
Hali!
Automatikus bejelentkezéses login rendszert szeretnék készíteni.
Odáig már eljutottam, hogy automatikus bejelentkezés nélkül jól működik: van egy formom, beírom a username-et és a passwordot, utána a passwordot kódolom md5-tel, majd összehasonlítom a felhasználó által megadott adatokat az adatbázisban lévőkkel. ha minden stimmel, indítok egy sessiont és a session_id-t hozzárendelem az adatbázisban a userhez. ezután szépen minden oldal elején folytatom a session-t és az adatbázisban rákeresek az aktuális session_id-re. ha megtalálom az egyező id-t mondjuk rockybro usernél, akkor rockybrot beléptetem.
és most jön az automatikus bejelentkezés. ahhoz már nem elég sessiont használni, mert ugyebár a session_id már más lesz, amikor újraindítom a böngészőt. ekkor jöhetnek szóba a sütik. megcsináltam úgy, hogy cookieba beraktam a felhasználónevet, és a kódolt jelszót, így is jól működött. de úgy tudom, hogy nem nagyon szabadna cookieba pakolni a jelszót, mégha kódolva van, akkor sem. hogy lehet ezt megoldani biztonságosan?
■ Automatikus bejelentkezéses login rendszert szeretnék készíteni.
Odáig már eljutottam, hogy automatikus bejelentkezés nélkül jól működik: van egy formom, beírom a username-et és a passwordot, utána a passwordot kódolom md5-tel, majd összehasonlítom a felhasználó által megadott adatokat az adatbázisban lévőkkel. ha minden stimmel, indítok egy sessiont és a session_id-t hozzárendelem az adatbázisban a userhez. ezután szépen minden oldal elején folytatom a session-t és az adatbázisban rákeresek az aktuális session_id-re. ha megtalálom az egyező id-t mondjuk rockybro usernél, akkor rockybrot beléptetem.
és most jön az automatikus bejelentkezés. ahhoz már nem elég sessiont használni, mert ugyebár a session_id már más lesz, amikor újraindítom a böngészőt. ekkor jöhetnek szóba a sütik. megcsináltam úgy, hogy cookieba beraktam a felhasználónevet, és a kódolt jelszót, így is jól működött. de úgy tudom, hogy nem nagyon szabadna cookieba pakolni a jelszót, mégha kódolva van, akkor sem. hogy lehet ezt megoldani biztonságosan?
session_id
update?
igaz
Süti lejár
én úgy gondoltam, hogy
de én mindezt úgy gondoltam, hogy ha az aktuális session_id(tehát amit épp most generált a php) nem, de a cookieban tárolt id megegyezik az adatbázisban tárolt id-vel(ez a jelenség akkor következik be, ha újraindítjuk a böngészőt), akkor beléptetem a usert, de közben szépen a frissen generált id-vel frissítem a cookiet és az adatbázist. így minden bejelentkezésnél megújul a tárolt session_id, és szerintem nehezebb így ellopni. hogy tetszik az ötlet? hogyan csinálják a profik?
wl cikkek
http://weblabor.hu/cikkek/munkamenetkezeles2
vagy sózd meg
a $pwd . $salt stringnek a hashét már nyugodtan eltárolhatod bárhol, főleg ha alaposan elsózod;)
Kicsit off
alapok
Én így csinálnám (login, session):
- user elküldi a login adatait (username/password)
- php oldalon lekérdezed a user -t, ellenőrzöd a jelszót
- ha minden oké, session -be bepakolod az a komplett rekordot a userről
Így már nem szükséges minden oldalbetöltéskor lekérdezned sessionid alapján a user -t az adatbázisból, csak loginkor.
A többi már nagyon hasonló a te módszeredhez:
Automatikus beléptetés:
- user belép
- generálsz egy hash -t (pl. md5(user_email + user_id + user_agent)), melyet letárolsz a usernél
- következő olyan kérésnél mikor nincs session de van cookie -ból érkező hash, kikeresed a hash alapján, és ellenőrzöd a hash -t (db -ből érkező user_email + user_id + kérésben érkező user_agent)
- ha minden oké, a user rekordját - ugyanúgy mint login-nál - letárolod a session -be.
Az automatikus beléptetés kb. ugyanaz mint nálad a login, viszont némi erőforrást megspórolsz vele.
u.i.: egy hasonló thread, hátha segít. Illetve érdemes olvasgatni a session lopásról/sql injection -ről kicsit részletesebben.
Ez azért
szerk:
Saltolva viszont jó lehet, szivárvány tábla csak rövid stringek törésére alkalmas.
Sima
Védelem?
http://pelda.domain/belepett.html
Generálsz cookie-ba egy jó
Nagyon kicsi az esély arra, hogy törlöd a cookie-ba generált id-t a táblából, aztán utána kiosztod másnak, de azért ennek elkerülésére érdemes az user_id-t is hosszáfűzni valahogy a cookie-ban lévő azonosítóhoz...