Autor Zpráva
badyto
Profil *
Zdravim!
Chcel by som sa spytat ci je tento sposob prihlasovania bezpecny:
function check_login(){
	$nick=htmlspecialchars($_POST["nick"]);
	$pass=htmlspecialchars($_POST["pass"]);
	if($nick !='' and $pass!=''){
		$R=mysql_query("select ifnull(id,'err') id from users where nick='$nick' and heslo='$pass'");
		$idNick=mysql_fetch_object($R);
		$idNick=$idNick->id;
		if($idNick!='err') $_SESSION["idNick"]=$idNick;	
	}
}

if(isset($_POST["nick"])) check_login();

if(!is_numeric($_SESSION["idNick"])) header("Location: index.php");
echo 'boli ste uspesne prihlaseny';


$_SESSION premenne myslim nema uzivatel ako ovplyvnit, ci sa mylim? Diky moc za vasu radu!
vynalezce
Profil
co takhle hashovat heslo
htmlspecialchars() chrani proti xss ale neni urcen pro ochranu proti mysql injection
lepsi je pouzit mysql_real_escape_string()
badyto
Profil *
Oki, diki moc za radu!
A k tomu hashovaniu, cize to iste ako mam len na 3. riadku dam napr.
$pass=md5($_POST["pass"]);

s tym ze hesla v DB budu ulozene tiez v md5() ??
Ja som mal len obavy ze ci uzivatel neakym sposobom mi nevie nastavit $_SESSION premennu, ale pokial to nie je mozne tak by to malo byt OK myslim nie?
Nox
Profil
badyto:
proč používáš htmlspecialchars když to jde do mysql databáze? -> mysql_real_escape_string

řádky 5-7 jsou zapsat jako
$idNick = mysql_result( mysql_query("..."), 0) );


ta konstrukce s ifnull nemá význam... podle mě lepší místo magickýho !='err' použít is_null()

echo na řádku 15 se provede vždy

co takhle dát nick/pass jako parametry funkce?

na řádek 4 bych dal radši !empty()
vynalezce
Profil
badyto:
s tym ze hesla v DB budu ulozene tiez v md5() ??
treba jeste pripadne salt

Ja som mal len obavy ze ci uzivatel neakym sposobom mi nevie nastavit $_SESSION premennu

zmenit hodnotu session nejde
Nox
Profil
http://en.wikipedia.org/wiki/Session_poisoning
badyto
Profil *
Ok idem si to hned vsetko pekne osetrit.

Dakujem vam vsetkym velmi pekne! Moc ste mi pomohli! este raz DIK!

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: