Cytat(b_chmura @ 11.09.2007, 14:03:56 )

Witam
Chciałbym się zapytać was ludzi z doświadczeniem i pomysłem czy takie zabezpieczenie jest wystarczające:
<?php
//logowanie - jeśli login i hasło są poprawne tworzy się sesja zakodowanego przez md5 loginu
i hasla
function loguj($login, $pass)
{
$spr = mysql_query("SELECT * FROM `USER` WHERE `login` = 'login' AND `haslo` = '$pass'" LIMIT 0
,1
);
{
$_SESSION['login'] = md5($login.$pass); return true;
}
else
{
return false;
}
}
//sprawdzanie czy user jest zalogowany - jeśli dane wyciągnięte i zakodowane przez md5 zgadzają sie z sesją wszystko jes
t ok
function spr_usr()
{
$query = mysql_query("SELECT * FROM `USER` WHERE `login` = '$login' AND `haslo` = '$pass'");
{
if(md5($user['login'].$user['haslo']) = $_SESSION['login']) {
return true;
}
else
{
return false;
}
}
}
?>
przejdzie to?
Przed:
<?php
$spr = mysql_query("SELECT * FROM `USER` WHERE `login` = 'login' AND `haslo` = '$pass'" LIMIT 0
,1
); ?>
Zapodałbym:
$login = str_replace("'", '', $login);
$pass = str_replace("'", '', $pass);
Nie ma co się bawić addslashes'ami i innymi badziewiami, lepiej po prostu wyciąć ten apostrof w cholerę - tak jest najbezpieczniej.
I najlepiej robić to wszędzie tam, gdzie zmienna bierze udział w zapytaniu MySQL - chyba, że te apostrofy są potrzebne, wtedy lepiej
zastąpić je funkcją htmlentities() i dopiero zapisywać do bazy.
Pozdrawiam.