Une brève discussion sur la sécurité des variables variables PHP

怪我咯
Libérer: 2023-03-10 20:58:01
original
1529 Les gens l'ont consulté

Les variables variables sont une fonctionnalité très pratique de PHP. Comme mentionné dans le manuel, Variables variables signifie que le nom de variable d'une variable peut être défini dynamiquement !
Alors, quels problèmes de sécurité surgiront si le nom de la variable peut être défini dynamiquement ? Jetons un coup d'oeil :

<?php
$a = &#39;phpinfo&#39;;
$a();
?>
Copier après la connexion

Ce code est facile à comprendre. Le type de la variable est le caractère phpinfo () est ajouté dynamiquement à la variable, donc la variable devient la fonction phpinfo et est exécutée dynamiquement. !

Selon le même principe, nous citons l'exemple des variables variables dans le manuel :

<?php
$a = &#39;phpinfo&#39;;
${$a()};
?>
Copier après la connexion

Cette fonction dynamique y met des variables dynamiques. ma déclaration n'est pas un peu professionnelle. , ou une variable variable, nous constaterons que la fonction phpinfo est toujours exécutée !

Si vous avez lu le manuel et l'exemple que j'ai donné, vous devez sentir que ce n'est pas du tout magique. C'est la caractéristique grammaticale de PHP, et ensuite nous ferons évoluer cette chose en une seule ligne :

<?php
 
$a = "${${phpinfo()}}";
 
?>
Copier après la connexion

Il s'agit de deux variables variables imbriquées. Nous remplissons simplement nous-mêmes le contenu des variables variables selon l'exemple ci-dessus. En fait, nous attribuons une certaine fonction à une certaine variable, donc la fonction phpinfo Quand. il a finalement été exécuté, il est devenu un prototype de diverses vulnérabilités et webshells !

Tout le monde devrait savoir après avoir lu ceci, pourquoi les experts m'ont demandé de lire le Manuel PHP, mais cet article se termine ici, nous avons raté un petit peu, Monsieur. Cela dit, la sécurité est la base, nous n'avons pas encore compris cela. Pourquoi les variables de l'exemple précédent utilisent-elles des guillemets simples, alors que l'exemple final utilise des guillemets doubles ? Si vous avez réfléchi à ce problème, je pense que vous devriez absolument le faire. a un grand potentiel, et cela pourrait devenir un gros problème à l'avenir !

La différence entre les guillemets simples et les guillemets doubles en PHP est toujours liée aux variables. Jetons un coup d'œil à l'exemple suivant :

<?php
$a = &#39;phpinfo()&#39;;
echo $a; //输出phpinfo()字符串
echo &#39;$a&#39;; //输出$a字符串
echo "$a"; //输出phpinfo()字符串
?>
Copier après la connexion

Le contenu des guillemets doubles sera analysé par. Les variables de syntaxe de PHP, et Le contenu entre guillemets simples est directement qualifié de chaîne !

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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal