Anonymní profil peter – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil peter – Programujte.comAnonymní profil peter – Programujte.com

 

Příspěvky odeslané z IP adresy 2001:718:2601:1f7:6ce7:76...–

peter
PHP › Mám problém s double přihlaš…
16. 10. 2014   #194997

:) Zpet k memu prispevku. Nemas tam session start. Nemas tam prihlasovani ze session, pouze z post. V tom puvodnim kodu mas prihlasovani pres session, ale omezene jen na nick, coz je bezpecnostni trhlina.

if (isset($_POST["nick"])) {login(0);}
else if (isset($_SESSION["nick"])) {login(1);}
else prihlasovaci formular

V pripade 0, veme udaje z post a zasifruje (nick, heslo).
V pripade 1, veme udaje ze zession a zasifruje (nick, heslo). (heslo pro session bych nechal zasifrovane jinak nez pro databazi. k heslu bych pro md5 nebo sha1 pridaval i nick, mozna a nejaky retezec navic. Scitacimu md5 je jedno, jakou delku sifruje.... Treba bych pro heslo pro session pouzil cas posledniho nalogovani jako udaj navic a upravil sql dotaz)

Navic teda, jestli to nevis, tak md5 je scitaci funkce a je udelana tak jednoduse, ze lze heslo odvodit. Urcite casti md5 vyjdou pro urcitou sadu znaku stejne, cimz se zmensi pocet moznosti. Nekolik let zpet byl nejaky algoritmus, co to dopocital do 4 min, tusim. Opakovanym pouzitim se toho moc nevyresi.

A tez by bylo dobre pouzivat jednotne nazvy. Nick je anglicky, heslo je cesky, login je anglicky. Obvykle pouzivam user, name, psw, sign (sign in prihlaseni)
 

peter
PHP › Mám problém s double přihlaš…
16. 10. 2014   #194977

Jo, a taky mi neni jasne, proc prihlaseni overujes 2x, 2x select. Proste, v prvni rade bych zjistil, zda je neco v post. Z da to neco je nick a heslo. Kdyz ano, tak tak zavolam funkci, ktere predam jmeno a heslo. Kdyz ne, tak zkusim totez pro udaje se session. A potom vsem bych teprve spoustel dotaz, je prihlaseny, neni. Neni formular, je zobraz info o uzivateli a tlacitko odhlasit.
Taky jako nevidim moc bezpecne presunovat v session nick a id jako identifikaci uzivatele. Session se da podstrcit a pak bych se snadno prihlasil jako admin, jen pres adminovo id a nick. Heslo uz znat nemusi, to tam neoverujes. Stacilo by mi teda prihlasit se jako obycejny uzivatel, padelat udaje v session a pak si muzu delat, co se mi zlibi :)

peter
PHP › Mám problém s double přihlaš…
16. 10. 2014   #194976

* Nevidim tam session_start(), presto pozivas $_SESSION.
* Nevidim tam ob_start(), ikdyz pouzivas primy vystup pres echo
* kdyz je session id false, tak vypis prihlasovaci formular a soucasne kontrolujes $_POST["login"] ? Proc tedy vypisujes formular, kdyz jeste nevis, zda se uzivatel prihlasil ci ne?
Proc id nekontrolujes pres isset?
Proc mas if ($a==true) {...} else {if ($a==false) ...} ? Celkem logicky, kdyz to neni true, tak v else bude false. Naplnujes to jako $_SESSION['id'] = $user['id']. Pokud by nastal jiny stav, tak ten uz nemas podchyceny, tak bych tam to porovnani na false uz nedaval.

Cili, ja si myslim, ze ne tak uplne rozumis tomu, co se prave odehrava a neumis spravne napsat k tomu if. Zkus si vzit tuzku a papir a rozepsat si to bod po bodu, co se kdy ma zobrazit, kdyz uzivatel neco udela.
1. prazdny formular
2. uzivatel vyplni udaje a odesle
3. precist data uzivatele, zjistit, zda se prihlasi
4. Neni prihlasen, vypsat prazdny formular.
Je prihlasen, vypsat prihlasen nebo aspon tlacitko Odhlasit. Nevypisovat formular.
Ty to mas udelane ted tak, ze se vypise formular. Pak overi prihlaseni. Cili, staci se prihlasit jednou a pak kliknout na nejaky odkaz a formular zmizi. Kdyz kliknes ale na tlacitko prihlasit s prazdnym formularem, tak te to odhlasi, tak tam radeji neklikat.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý