Gu1ll4um3r0m41n 8
| Posté : 07-05-2007 18:35
Oui en effet, la fonction première de intval est de convertir une valeur en entier mais elle peut aussi protéger contre les injection SQL quand la valeur à filtrer doit être un entier :p
Je vais donner ma fonction cookiedecode en entier ce sera plus pratique...
function cookiedecode($user) {
global $language;
$stop=false;
if (!empty($_GET)) {
if ($_GET[user]!="") { $stop=true; $user="BAD-GET";}
} else if (!empty($HTTP_GET_VARS)) {
if ($HTTP_GET_VAR[user]!="") { $stop=true; $user="BAD-GET";}
}
if ($user) {
$userX = addslashes(base_64_decode($user));
$cookie = explode(":", $userX);
$cookie[0] = intval($cookie[0]);
if (trim($cookie[1])!="") {
$result = mysql_query("select pass, user_langue from users where uname='$cookie[1]'");
if (mysql_num_rows($result)==1) {
list($pass, $user_langue) = mysql_fetch_row($result);
if (($cookie[2] == md5($pass)) AND ($pass != "")) {
if ($language!=$user_langue) {
mysql_query("UPDATE users set user_langue='$language' where uname='$cookie[1]'");
}
return $cookie;
} else {
$stop=true;
}
} else {
$stop=true;
}
} else {
$stop=true;
}
if ($stop) {
setcookie("user","",0);
unset($user);
unset($cookie);
header("Location: index.php");
}
}
}
faire
$userX = addslashes(base_64_decode($user));
est plus pratique que
$cookie[1] = addslashes($cookie[1]);
$cookie[2] = addslashes($cookie[2]);
:=)
PS:
Sinon, en attendant le patch officiel, il est possible de protéger un site tournant sur NPDS du en désactivant le bloc User ;)
Message édité par : Gu1ll4um3r0m41n / 07-05-2007 19:53 |