Maison > Article > développement back-end > Pourquoi Register_globals a-t-il été désactivé en PHP ?
En PHP, register_globals était un paramètre interne qui enregistrait automatiquement les variables du tableau superglobal $_REQUEST. Cependant, il a été désactivé par défaut en raison de problèmes de sécurité.
Lorsque register_globals était activé, les valeurs des champs de saisie des requêtes POST ou GET pouvaient être directement accessibles en tant que variables avec le même nom comme champ de saisie. Par exemple :
<form method="post"> <input type="text" name="username"> <input type="submit"> </form>
Avec register_globals activé, le code PHP suivant serait évalué comme vrai au début du script :
$username === $_POST['username'];
Register_globals introduit de graves failles de sécurité. Par exemple, un attaquant pourrait ajouter un paramètre de chaîne de requête à une URL, tel que "?authorized=1", pour contourner les contrôles d'autorisation.
Contrairement à register_globals, le mot-clé global a un but différent. Il est utilisé pour accéder aux variables d’une portée différente au sein d’une fonction. Par exemple :
$foo = 'bar'; function baz() { // Attempting to use $foo here will trigger a warning echo $foo; } function buzz() { global $foo; // Declares that $foo is a global variable echo $foo; // Prints 'bar' }
Bien que register_globals ne soit plus utilisé en raison de ses risques de sécurité, le mot-clé global reste un outil utile pour accéder à des variables dans différentes portées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!