Maison >développement back-end >tutoriel php >Pourquoi Register_Globals est-il dangereux en PHP ?
Comprendre Register_Globals et Global Keyword en PHP
Lorsque vous travaillez avec des applications Web, il est essentiel de comprendre les concepts de register_globals et du mot-clé global dans PHP.
Qu'est-ce que Register_Globals?
La directive register_globals enregistre automatiquement les éléments du tableau $_REQUEST en tant que variables. Cela signifie que toutes les données soumises via des formulaires (via POST ou GET) sont immédiatement accessibles en tant que variable PHP portant le nom du champ de saisie correspondant.
Bien que cette fonctionnalité puisse sembler pratique au départ, elle expose l'application à vulnérabilités de sécurité. Les attaquants peuvent manipuler la chaîne de requête URL ou les données du formulaire soumis pour définir des variables arbitraires et potentiellement obtenir un accès non autorisé. Par conséquent, il est fortement conseillé de désactiver register_globals pour des raisons de sécurité.
Exemple :
Considérez un scénario dans lequel un formulaire de connexion permet aux utilisateurs de soumettre leur nom d'utilisateur et leur mot de passe. Avec register_globals activé, un attaquant pourrait ajouter ce qui suit à l'URL :
?username=admin&password=secret
Cela définirait automatiquement les variables $username et $password dans le script PHP, permettant à l'attaquant de contourner le processus d'authentification.
Qu'est-ce que le mot-clé global ?
Le mot-clé global a un objectif différent et n'a aucun rapport avec registre_globals. Il permet d'accéder ou de modifier des variables définies en dehors d'une fonction au sein de cette fonction.
Exemple :
$foo = 'bar'; function baz() { echo $foo; // PHP generates a warning as $foo is undefined within this scope } function buzz() { global $foo; // Enables access to the global variable $foo echo $foo; // Prints 'bar' to the screen }
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!