J'essaie de trouver un moyen de nettoyer facilement toutes les variables POST et GET avec une seule fonction. Voici la fonction elle-même:
//clean the user's input
function cleanInput($value, $link = '')
{
//if the variable is an array, recurse into it
if(is_array($value))
{
//for each element in the array...
foreach($value as $key => $val)
{
//...clean the content of each variable in the array
$value[$key] = cleanInput($val);
}
//return clean array
return $value;
}
else
{
return mysql_real_escape_string(strip_tags(trim($value)), $link);
}
}
Et voici le code qui l'appellerait:
//This stops SQL Injection in POST vars
foreach ($_POST as $key => $value)
{
$_POST[$key] = cleanInput($value, $link);
}
//This stops SQL Injection in GET vars
foreach ($_GET as $key => $value)
{
$_GET[$key] = cleanInput($value, $link);
}
Pour moi, cela semble que cela devrait fonctionner. Mais pour une raison quelconque, il ne retournera pas les tableaux de certaines cases que j'ai dans un formulaire. Ils continuent à sortir en blanc.
J'ai testé mon code sans la fonction ci-dessus et cela fonctionne très bien, je veux juste un peu plus de sécurité là-dedans.
Merci!
Vous devriez éviter d'essayer de tout assainir pour chaque contexte. Cela ne fait que gêner votre application et la rendre plus difficile à sécuriser lorsque vous souhaitez recréer des fonctionnalités perdues. C'est une raison valable pour laquelle magic_quotes a été désactivé. http://php.net/manual/fr/security.magicquotes.php Quelque chose que vous recréez dans un sens ici. L'entrée doit être nettoyée pour l'application à laquelle vous l'envoyez. Si vous envoyez au navigateur via HTTP, désinfectez-le pour HTTP et HTML. Si vous l'envoyez à SQL DB, nettoyez-le pour SQL. – bucabay
désolé, je voulais dire obsolète: http://php.net/manual/fr/security.magicquotes.php – bucabay
Merci pour l'aide/conseil à tous! Il semble que je doive repenser mon processus. :-) – tscully