Maison > développement back-end > tutoriel php > Pourquoi Register_Globals est-il dangereux en PHP ?

Pourquoi Register_Globals est-il dangereux en PHP ?

Barbara Streisand
Libérer: 2024-11-17 19:27:02
original
981 Les gens l'ont consulté

Why is Register_Globals Dangerous in 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
Copier après la connexion

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
}
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal