Autor Zpráva
RiZe
Profil
Na svůj web bych potřeboval udělat automatické přihlašování, prostě zapamatování uživatele na jednom počítači. Představu jak to udělat bych měl, buď přes databázi správu sessions, nebo prostě jen nastavit určitou cookie, a podle ní identifikovat uživatele v každém skriptu, ale nevím, co bych měl do té cookie uložit. Hash hesla a jména s aktuálním časem a ten samý údaj do databáze a kontrolovat proti sobě, třeba ještě s prohlížečem a IP adresou, nebo jen hash hesla a ID uživatele (tak nějak to má tuším phpBB). Poraďte. Díky
Pavel Prochazka.zde.cz
Profil *
zdravim.
sice toho moc nevim o technologii internetu ale na cookie bych zapomel....
Radsi bych to udelalt takto: do databaze si zaved registraci uzivatela a ip adresu ze ktere se naposledy prihlasil a kolonku zda je prihlasen. Po prihlaseni se do kolonky IP upozi ip adresa uzivatele a do kolonky je prihlasen se ulozi treba true, potom se provede odstraneni staruch session promenich (logovacich)!!!!!! a dale se natavi logovaci session, tedy pokud vse probehlo ok (name a passvord je spravny). Pri odhlaseni jednak zrusis paticne session a z v databazi reknes v kolonce prihlasen ze je odlogovan == false.
Pokud uzivatel zavre okno prohlizece a pritom se neodhlasi, tak v kolonce odhlasen je true, to znamena ze je prihlasen.
Po spusteni IE nebo podobneho prohlizece se ve sctiptu zjisti IP adresa a vyhleda se pozadovany uzivatel. Zjisti se zda se uzivatel odhlasil, pokud ne tak ho rovnou naloguji.
Ale do citlivych sekci bych urcite pozadoval novou registraci!
RiZe
Profil
Ovšem toto řešení vyžaduje statické (veřejné) IP adresy, což je splněno. Web je klanový, takže uživatelé se normálně neregistrují, ale jsou jim vytvářeny účty, problém je ale v tom, že mám dva členy, kteří jsou z jedné sítě, a tudíž mají stejnou IP adresu.
Pavel Prochazka.zde.cz
Profil *
a co skusit toto:

$IPadresa=$_SERVER['REMOTE_ADDR']; // sem "naskládame" vše, co lze o čtenáři zjistit odděleno zavináčem (adresy uživatelů za proxy ap.)
if (isset($_SERVER['REMOTE_HOST'])){$IPadresa.='@'.$_SERVER['REMOTE_HOST' ];}
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])){$IPadresa.='@'.$_SERVER['HTT P_X_FORWARDED_FOR'];}
if (isset($_SERVER['HTTP_FORWARDED'])){$IPadresa.='@'.$_SERVER['HTTP_FORW ARDED'];}
if (isset($_SERVER['HTTP_CLIENT_IP'])){$IPadresa.='@'.$_SERVER['HTTP_CLIE NT_IP'];}
if (isset($_SERVER['X_HTTP_FORWARDED_FOR'])){$IPadresa.='@'.$_SERVER['X_H TTP_FORWARDED_FOR'];}
if (isset($_SERVER['X_FORWARDED_FOR'])){$IPadresa.='@'.$_SERVER['X_FORWAR DED_FOR'];}
ronnie
Profil
Ukládat IP adresu do cookies bych nedělal, IP adresa se může měnit, a to dokonce i během relace v rozpětí několika vteřin. Stejně tak bych neukládal do cookie hash klasického hesla. Není problém si z cookie hash hesla získat, když znám vlastní heslo, tak lze často vyzkoušet běžné metody hashovaní jako md5 a sha1, abych zjistil způsob, jakým hashe vytváříš. A jakmile tohle vím, vím, že má uživatel v cookie heslo, které je zahshované určitou metodou, tak si už jen seženu cookies uživatelů, což často není problém, nejběžnější hesla uživatelů a použiju slovníkový útok a z velkou pravděpodobností získám přístupové údaje.

Použil bych cookie a rozšíření mcrypt, které umožňí opětovně hash rozšifrovat, ale pouze tomu, kdo zná klíč (eshop). Btw session_set_cookie_param() umožňuje nastavit dobu platnosti cookie se session hashem, šlo by to možná řešit právě takto.
RiZe
Profil
Tak jak jsem již psal, máme všichni veřejnou IP, takže SNAD by tam problém se změnou nebyl, až na ty dva kluky, co jsou z jedné sítě.
Tím ukládáním hesla a IP do cookie sem myslel něco vy stylu

$pro_cookie = sha1(IP+AGENT+HESLO+NICK);

Problémem je právě co tam uložit. Nebo jestli nevyužít databázi, do speciální tabulky vždy zapsat řádek (přihlášení), ve kterém by byla IP, Agent, vygenerovaná SESSION ID a další. A do cookie by se ukládála SESSION ID. Plus by se poté kontrolovala v každém skriptu ta IP a prohlížeč a SESSION ID by se řekněme každou půlhodinu regenerovala, a to třeba na základě aktuálního času v milisekundách a dobu generování skriptu (teď mě napadá. jak asi? :) ), nebo tak něco.
Pavel Prochazka.zde.cz
Profil *
asi bych skusil vygenerovat nejake cislo a to ulozil do cookie a jeste do databaze, tim si rozlisim stejnou IP ale pokazde jineho uzivatele. Generovani nahodneho cisla, bych delal pro kazdeho. Tim me odpadne problem rozlisovani jedinecne a stejne IP adresy....
Pokud by nekdo odstranil cookie, tak by se jednalo neco jako o noveho uzivatele....
A po tomto pripade by se uzivatel musel manualne jednou nalogovat a pote uz bude vse ok.
Tuto vlastnos bych jeste zduraznil pri registraci....
Toto téma je uzamčeno. Odpověď nelze zaslat.