Maison  >  Article  >  développement back-end  >  eval() et create_function() en php

eval() et create_function() en php

无忌哥哥
无忌哥哥original
2018-06-28 14:56:287007parcourir

* eval() et create_function()

* 1. eval()

* 1. La fonction eval() calcule la chaîne selon le code PHP

* 2. La chaîne doit être du code PHP légal et doit se terminer par un point-virgule

* 3. Si l'instruction return n'est pas appelée dans la chaîne de code, NULL

* 4 .S'il y a est une erreur d'analyse dans le code, la fonction eval() renvoie false

* 5. Cette fonction est utile pour stocker du code dans un champ de texte de base de données pour des calculs ultérieurs

* 2 , create_function( 'paramètre', 'code corps de fonction') : Créer une fonction anonyme

//Les fonctions des deux instructions suivantes sont exactement les mêmes

eval('echo 4+5;');  //输出9
echo eval('return 4+5;'); //返回9并显示在屏幕上

//Bien que les fonctions du ci-dessus, les deux instructions sont identiques, les valeurs de retour ne sont pas les mêmes

//Donc, si vous souhaitez faire référence à la valeur de retour eval(), vous devez utiliser return

var_dump(eval('echo 4+5;')); //返回 NULL
var_dump(eval('return 4+5;')); //返回 9

//Démonstration d'attaque par injection eval()

isset($_GET['p']) ? eval($_GET['p']) : null;

//Ajoutez maintenant ?p=phpinfo(); ou d'autres instructions PHP légales après l'url, elle sera exécutée directement et l'injection est réussie

//Vous pouvez ajouter vos annonces, vos adresses Jump, etc., pour atteindre l'objectif d'attaques malveillantes

//Utilisez create_functoin() pour créer une fonction anonyme

//Parce que cette fonction est obsolète, certains éditeurs donneront un avertissement, inutile d'en dire plus

//Il suffit de savoir que cette fonction a été dans ce monde

$func1 = create_function('$a,$b', 'return ($a+$b);');
echo $func1(10,20);

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
Article précédent:fonction de rappel en phpArticle suivant:fonction de rappel en php