Il y a quelques temps, dans les commentaires sur l’article traitant de OVH et PHP 5, nous avons abordé le problème des magic quotes et du register globals.

Pour des questions de sécurité il est conseillé de les désactiver. Pour les magic_quotes, PHP 6 s’en chargera … Mais bon, quand on voit que OVH est encore en PHP 4, on se dit que le problème n’est pas encore réglé ^^.

Dans tout mes projets, lorsque j’appelle mon fichier de configuration je désactive les magic_quotes et je mets le register_globals à off. Voici donc le contenu de mon init.conf.php :

Désactivation des magic_quotes :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*
   suppression des magic quotes
   pour raisons de sécurités
- on met magic_quotes_runtime à 0 (désactivé)
- on désactive magic_quotes_runtime (0)
- si magic_quotes_gpc est activé, on le désactive
  pour tout les types de variable
*/
 
ini_set('magic_quotes_runtime', 0);
set_magic_quotes_runtime(0);
 
if (1 == get_magic_quotes_gpc()){
     function remove_magic_quotes_gpc(&$value){
          $value = stripslashes($value);
     }
 
     array_walk_recursive($_GET, 'remove_magic_quotes_gpc');
     array_walk_recursive($_POST, 'remove_magic_quotes_gpc');
     array_walk_recursive($_COOKIE, 'remove_magic_quotes_gpc');
}

Désactivation du register_globals :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/*
 
 Mise à off de register_globals (de base si version PHP > 4.2)
 pour des raisons de sécurité
 
- si register_globals est activé :
- on le désactive pour les sessions
- on le désactive pour toutes les variables
- on le met à off
*/
 
if(ini_get('register_globals')){
     $superglobals = array($_SERVER, $_ENV, $_FILES, $_COOKIE, $_POST, $_GET);
 
     if(isset($_SESSION)){
          array_unshift($superglobals, $_SESSION);
    }
 
    foreach ($superglobals as $superglobal){
         foreach ($superglobal as $global => $value){
              unset($GLOBALS[$global]);
         }
    }
 
     ini_set('register_globals', false);
}

Voilà, vous avez ma version pour partir sur de bonnes bases.

Vous avez aimé ? Partagez !
  • Digg
  • del.icio.us
  • Facebook
  • Twitter
  • Google Bookmarks
  • Reddit
  • RSS


    ici
  1. Méthylbro le Dimanche 26, 2009

    Plus simple encore et en deux lignes ; tu rajoutes ceci dans un .htaccess à la racine de ton projet :

    php_value magic_quotes_runtime 0
    php_value register_globals Off

    C’est même plus logique comme ca

    ;)

  2. Amaury le Dimanche 26, 2009

    Méthylbro> Je voulais le dire quand l’article est paru. Mais c’est toujours bon de connaitre cette méthode dans le cas où on a pas accès au .htaccess