Autor Zpráva
gardener
Profil
Zdravím
Mám jeden problém, v závislosti na návratové hodnoty fce pro ověřování nastavuji hodnotu session.
Pokud je ověření o.k, nastavím hodnotu session na 1 a odkazuji na další stránku, kde session kontroluji, ale at ma session hodnotu jakou chce, tj. 0 nebo 1 vzdy nesplni podminku.

Viz:
overeni($username,$password);//Volam fci
{
if($_SESSION['prihlasen'] == 0){
    //:Pokud se neprihlasi spravne
     echo "neco je spatne";
     echo "<script>location.href='false.html';</script>";
     //exit();
}
else if($_SESSION['prihlasen'] == 1)
{
    echo "k overeni doslo";	
    exit("<script>location.href='layout.php';</script>");
}
}


A kdyz ma hodnotu 1, tak odkazuji na layout.php kde kontroluji.

session_start();
if ($_SESSION['prihlasen'] != 1);
{
	$id=session_id();
	echo("$id");
	exit("Neplatne prihlaseni");
}


Nicméně to nikdy neprojde, kde by mohla býti chyba?


Díky za každou radu..
tiso
Profil
var_dump($_SESSION);
nightfish
Profil
if ($_SESSION['prihlasen'] != 1);
to znamená: pokud je hodnota v $_SESSION['prihlasen'] různá od 1, proveď prázdný příkaz (nedělej nic)
následně se provede blok na řádcích 3 až 7 nezávisle na výsledku výše uvedené podmínky
gardener
Profil
Ach so, takže je tam špatně středník v
if ($_SESSION['prihlasen'] != 1);
gardener
Profil
Ach so, takže je tam špatně středník v
if ($_SESSION['prihlasen'] != 1);
gardener
Profil
Ted by me ale jeste jenom zajimalo, jakym zpusobem je tohle napadnutelne, moc se mi nechce verit, ze by to bylo nejak moc bezpecne...uzivatel muze preci podstrcit falesnou session, nebo ne?
A jak se proti tomu branit?
imploder
Profil
gardener
To je z hlediska bezpečnosti úplně na prd. Ano, uživatel může podstrčit falešnou session. Proto musí být správná hodnota session pro prihlášení proměnlivá - při každém přihlášení generovaná nová. Nejlépe nějaké hodně velké číslo nebo řetězec. Tento identifikátor se nazývá SESSID.

Tak, jak to máš, je vlastně SESSID vždy 1. To je opravdu naprosto nepoužitelné.
gardener
Profil
O.K a jak takovou hodnotu generovat? a zatoven tu samou uverovat? Dalo by se to napr. pomocí Mtrand?
A když si dám vypsat session_id();, tak mi to také vrátí nějaký dlouhý řetězec..nedalo by se toho nějak zužitkovat?
imploder
Profil
gardener
http://us2.php.net/uniqid
Obvykle se ten identifikátor pak uloží na serveru jako platný. Při ověřování se pak ověřuje, jestli tam je, nebo není. Identifikátory můžeš mít uložené v tabulce v databázi nebo na řádcích v textovém souboru. Pokud nemáš databázi a použiješ tak textový soubor, je to o něco složitější - musí být na místě, kde není veřejný přístup (.htaccess: deny from all) a musí se vždycky volat flock(). Lepší je mít databázi, tam není co řešit.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: