Přihlášení uživatele je na většině webů realizováno pomocí kombinace uživatelské jméno / heslo. V databázi je uživatelské jméno uloženo typicky jako plaintext a heslo jako nějaký hash. Většina starších systémů používá md5(heslo) (třeba i tento web, MyEgo.cz, protože hesla jsou zde z roku 2003, kdy md5 bylo považováno za dostatečné; nicméně budu to měnit), novější třeba sha1(heslo), moderní například sha1(SALT.heslo). Sůl je v tomto případě náhodný řetězec, třeba |L$k!#Lcj29+RbXA=*N), unikátní pro každou instalaci. Důvodem pro použití soli je stížit možnou rekonstrukci skutečného hesla z hashe, pokud by tento byl odcizen.
Tento postup je jednoduchý na realizaci a všeobecně známý. Zajímavější je, jak poznat, že je klient přihlášen. Osobně toto řeším uložením náhodně vygenerovaného hashe do cookie. Tento náhodný řetězec přitom nijak nesouvisí s heslem. Generuje se třeba takto:
mt_srand( (double) microtime() * 100000000);
$this->cookiekey = sha1(COOKIE_SALT.uniqid(mt_rand()));
Poté, co je ověřeno jméno a heslo klienta, vygeneruje se a zapíše do databáze a do cookie tento hash s tajnou solí. Při návratu klienta na web je tato hodnota v cookies porovnána na databázi, a pokud se shoduje, je uživatel přihlášen. Navíc je více než vhodné kontrolovat IP adresu.
Tento postup samozřejmě nezamezí tomu, že někdo odposlechne danou cookie a má identickou IP adresu (zejména za NATem to není nemožné), ale pro běžné (nebankovní) redakční systémy je to rozumný kompromis mezi bezpečností, pohodlím a náklady na zabezpečení.
Celé je to samozřejmě možné ukládat do session namísto cookies, což dále zvýší bezpečnost, ale sníží komfort.
Pokud používáte ve svém CMS jiný postup, budu rád když se o něj podělíte v komentářích.


automatické odpojování GPRS/EDGE
Opera Mini 5
SystemLCID nastavte na hodnotu 0x0405
vytvořte v registrech dva výše uvedené klíče