Maison  >  Article  >  développement back-end  >  Pourquoi Register_globals a-t-il été désactivé en PHP ?

Pourquoi Register_globals a-t-il été désactivé en PHP ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-15 10:33:02632parcourir

Why Was register_globals Disabled in PHP?

Enregistrement des globaux en PHP

Introduction

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é.

Exemples de Register Globals

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'];

Vulnérabilités de sécurité

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.

Mot-clé global

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'
}

Conclusion

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn