Autor Zpráva
darkshadow
Profil *
Zdravim,

mam dotaz jakym zpusobem resite autentizaci uzivatelu na webu ?

Melo by to zvladnout:
1) identifikovat neznameho uzivatele, ulozit jeho stav a pamatovat si ho urcite casove obdobi
2) zpracovat prihlaseni uzivatele pomoci jmena/hesla


Jde mi o nejake hotove odzkousene reseni, nemam moc chut to psat nekolik dnu sam a udelat tam nekde chybu, kdyz urcite existuje hotove reseni.
gajdynator
Profil
darkshadow
Skús hľadať
roberta
Profil
nemam moc chut to psat nekolik dnu sam a udelat tam nekde chybu
tak neprogramuj a venuj sa nejakým činnostiam, na ktoré máš chuť :)

inak poznáš google? ak nie, tak pomocou neho si môžeš vyhľadať hotových riešení viac než dosť. napríklad si stiahni zdrojáky nejakého CMS...
darkshadow
Profil *
To jsou teda odpovedi...

je mi jasne ze strycek google mi vyplivne tucty zalezitosti ...

.. me jde ale o to ziskat zde odkazy na otestovane reseni, proste co pouzivate a s cim mate dobre zkusenosti...
Pepr
Profil *
taky se tomu snažim přijít na kloub ale furt narážim na tu zasr... databázi MySQL a "strýček" gůgl je v tomhle směru na ho...
hodně štěstí přihledání a pevný nervy (mě už odpochodovali a tak du radši na pivo)
roberta
Profil
tak si napr. stiahni zdrojáky miniBB (to je práve toto fórum - adresu máš dole) a tam uvidíš, ako je riešený tvoj problém, pretože odpoveď na tvoju otázku je tak na jednu novú knižku...
roberta
Profil
Pepr
MySQL ťa nikto nenúti používať, ak ti vadí, tak používaj inú databázu... a ak to chceš riešiť zložito, tak databázu vôbec nepoužívaj a použi ako úložisko dát súbory...
pykaso
Profil *
No ja jsem se pokusil jen tak zbezne nacrtnout jak by takova trida mohla fungovat. Prosim zdejsi odborniky o pripominky a navrhy.
joejoe
Profil *
disable cookies! nechapu proc buzerovat uzivatele aby si prekonfigurovaval svuj pocitac, kvuli blbe napsanym strankam. navic nektere prohlizece cookies nemusi vubec umet (treba mobilni zarizeni)

osobne bych doporucil postup:
1) formular (tohle je nejslabsi misto celeho postupu - heslo se posila nezasifrovane, lze ho snadno odchytit- slo by pomoci javascriptu pocitat md5() a jenom ten posilat)
2) SELECT * FROM uzivatele where `user` = '$_REQUEST[user]' AND `password` = 'PASSWORD($_REQUEST[password])'
(heslo neni ulozene v databazi - je tam jenom nejaky kontrolni soucet)
3) if (mysql_numrows() > 0) $_SESSION['user'] = 'franta' (heslo je zbytecne si ukladat, staci vedet ktery uzivatel a ze je prihlaseny)
4) isset($_SESSION['user']) echo prihlaseny ...
5) odhlaseni unset($_SESSION['user'])

sessions predavat i bez cookies (na ladeni je nelepsi si cookies zakazat)
$sname = session_name();
$sid = session_id();
"<input type=\"hidden\" name=\"$sname\" value=\"$sid\" />";
"<a href=\"x.php?$sname=$sid\"/>

konkretnejsi kod momentalne nemam, da se pouzit treba:
http://www.php.net/manual/en/features.http-auth.php (heslo se posila zasifrovane, prihlasovaci udaje se posilaji se pri kazdem requestu znova, je potreba spravne nastaveny server, problem s odhlasenim, seznam uzivatelu se dela rucne - databaze/ ukladani zasifrovaneho hesla atd.)
podobne se da pouzit
http autentizace pomoci .htaccess (resi seznam uzivatelu a hesel)
http://www.apacheweek.com/features/userauth

je doporucene pouzivat jakekoli prihlasovani v kombinaci s https

v )googlese daji najit podrobneji popsane navody, je potreba si uvedomit vsechny problemy na ktere je potreba si dat pozor:
- heslo posilat pokud mozno sifrovane nebo nejakou hash (javascript nemusi byt podporovany, muze byt vypnuty)
- neukladat si nikde heslo plain/text - ani do databaze ani do sessions
- posilat prihlasovaci udaje pokud mozno jen 1x (ulozit si do sessions, ze je prihlaseny)
- u http autentizace se "spatne" odhlasuje (zavisi na prohlizeci)
- pokud mozno https
- zapisovat si datum a cas posledniho prihlaseni + posledni ip adresu (pro lepsi dohledatelnost)
- kontrolovat si jestli uzivatel nezmeni v prubehu session ip adresu (popr. vynutit si opetovne prihlaseni)
- udaje v cookies se daji snadno podvrhnout falesne, cookies nemusi byt podoporovane, muzou byt vypnute
Leo
Profil
"cookies nemusi byt podoporovane, muzou byt vypnute"

Ale nic lepsiho zatim nikdo nevymyslel, telepatie mezi klientem a serverem neexistuje a http je bezestavovy protokol. Leo
pykaso
Profil *
to joejoe)

-- zajimavy text a víceméně souhlasím, jenže jak si uživatele pamatovat bez cookies a bez ssid v adrese?

.. to prostě nejde, je nutné si uvědomit pro koho je aplikace určena a podle toho se rozhodnout. Pokud se jedná o nákupní portál, těžko jej budete používat v mobilním zařízení. Dobré řešení je speciální verze uživatelského rozhraní pro takové zařízení.

.. metoda se skrytým formulářovým polem se dá využít pokud odesíláte formulář, jinak je vám to pole na nic

..předávat sid v odkazu není vždy možné využít

Studoval jsem statistiky a z 5000 přístupů bylo pouze 0.6% bez cookies. Tzn. 30 přístupů z 5000, a nejsem si jist, zda to nejsou roboti.
thingwath
Profil
HTTP autentizace může být smysluplná alternativa ke cookies, to je pravda.
pykaso
Profil *
třeba u eshopu je (podle mě) tato varianta nepoužitelná....
joejoe
Profil *
pykaso: neznam zadnou prekazku, ktera by branila pouziti session_id v adrese.
specialni verze stranek se da udelat treba treba pomoci <link rel="stylesheet" media="handheld" ... /> (osobne nemam rad tlacitka typu - stranka formatovana pro rozliseni 800x600, stranka formatovana pro tisk)

ad. statisitky zakazanych cookies: otazka je jestli vam to za stoji za to.
pykaso
Profil *
joejoe: no kdyz mate pracne vyrobene odkazy typu http://server . pripona/mobilni-telefony/nokia/6310i , neni moc "vyhodne" tam mit jeste dlouhe sid. podivejte se na nejaky zavedeny eshop a urcite tam sid v odkazu neuvidite
joejoe
Profil *
($funguji_cookies) ? $link : $link.'&amp;'.session_name().'='session_id();

rozhodne lepsi je spatne vypadajici link jako nefungujici stranka.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0