Désactiver les Magic Quotes en mutualisé via une fonction php

Publié le 9 mars 2009 - Developpement Web. Tags : , ,

Petit rappel : les Magic_Quotes est une fonctionnalité de PHP destinée à protéger automatiquement les données utilisées dans un script PHP part un backslash (« \ »), principalement afin d’éviter les injection SQL. Même si l’idée est intéressante pour les débutants, il faut bien reconnaitre que cette fonction est nettement plus problématique qu’autre chose pour la plupart des développeurs. Le problème, c’est que bon nombre de serveurs mutualisés sont configurés avec les Magic Quotes d’activées par défaut, et ce, malgré le fait que cette fonctionnalité soit obsolete depuis PHP 5.3 (et même carrement supprimée depuis PHP 6).

Du coup, il faut trouver un moyen de s’en débarrasser (pour éviter le phénomène de double échappements, entre autre) tout en assurant une portabilité maximale (ex: faciliter les changements de serveurs). Alors qu’une simple édition du fichier de configuration php (php.ini) suffit sur un serveur dédié (il faut mettre magic_quotes_gpc = Off), pour tous les autres cas l’astuce consiste à appeler une fonction PHP avant toute execution de script (en début de page donc).

Et pour ce faire il existe plusieurs fonction, plus ou moins efficaces ; en ce qui me concerne, voici celle que j’utilise (Source : Site du zéro):

function stripslashes_r($var)
{
if(is_array($var))  dessus
{
return array_map('stripslashes_r', $var);
}
else
{
return stripslashes($var);
}
}
 
if(get_magic_quotes_gpc())
{
$_GET = stripslashes_r($_GET);
$_POST = stripslashes_r($_POST);
$_COOKIE = stripslashes_r($_COOKIE);
}

Nous voilà débarassés :)

nb: pensez à sécuriser un minimum votre code par contre…


Articles sur ce thème :