//fonction de filtrage (sécurité)
function getval($var,$type=0,$filtre_url=0)
{
///anti XSS
if ($filtre_url == 0)
{
$value = ($type == 0) ? htmlspecialchars($var, ENT_QUOTES) : intval($var);
}
else
{
$value = ($type == 0) ? str_replace(array(':','/','.'), '', htmlspecialchars($var, ENT_QUOTES)) : intval($var);
}
///anti injection SQL
if(get_magic_quotes_gpc())
{
$value = stripslashes($value);
}
if(function_exists('mysql_real_escape_string'))
{
$value = mysql_real_escape_string($value);
}
//pour version de PHP < 4.3.0 on utilise addslashes
else
{
$value = addslashes($value);
}
///on retourne une valeur filtrée
return $value;
}
salut
voici ma fonction de filtrage. Je viens d'y ajouter la partie anti injections SQL. Un dilemme arrive alors : j'avais opté dans la partie anti XSS pour l'utilisation de htmlspecialchars ENT_QUOTES ce qui signifie que les guillemets simples et doubles sont convertis en html. Ce choix n'est pas compatible avec la partie anti injections sql : vu qu'il n'y aura plus de guillemets, cette partie n'aura aucun effet sur le texte.
Il me faut donc choisir : soit je modifie mon htmlspecialchars ENT_QUOTES en htmlspecialchars ENT_NOQUOTES ce qui ne convertirait pas les guillemets et donnerait un sens à l'utilisation de la partie d'anti injections sql soit je supprime la partie anti injections sql fraîchement ajoutée.
Ma question est : est-ce qu'il est mieux de choisir la solution ENT_NOQUOTES combiné avec la nouvelle partie anti injections, ou de supprimer la partie anti injections sql et conserver mon htmlspecialchars ENT_QUOTES ? Quels sont les avantages et inconvénients à l'exception du fait que la conversion en html augmente pas mal le nombre de caractères par rapport à l'échappement ?
Merci d'avance pour vos réponses
cordialement
Patami