Heim  >  Artikel  >  Backend-Entwicklung  >  eval() und create_function() in PHP

eval() und create_function() in PHP

无忌哥哥
无忌哥哥Original
2018-06-28 14:56:286957Durchsuche

* eval() und create_function()

* 1. eval()

* 1. Die Funktion eval() berechnet den String gemäß dem PHP-Code

* 2. Die Zeichenfolge muss legaler PHP-Code sein und mit einem Semikolon enden

* 3. Wenn die Return-Anweisung nicht in der Codezeichenfolge aufgerufen wird, NULL

* 4 .Wenn vorhanden Liegt ein Analysefehler im Code vor, gibt die Funktion eval() false

* 5 zurück. Diese Funktion ist nützlich, um Code in einem Datenbanktextfeld für spätere Berechnungen zu speichern

* 2 , create_function( 'parameter','function body code'): Erstellen Sie eine anonyme Funktion

//Die Funktionen der folgenden beiden Anweisungen sind genau gleich

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

//Obwohl die Funktionen der beiden oben genannten Anweisungen sind gleich, der Rückgabewert ist nicht derselbe

//Wenn Sie sich also auf den Rückgabewert von eval() beziehen möchten, müssen Sie return

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

//eval() verwenden Demonstration des Injektionsangriffs

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

//Fügen Sie nun ?p=phpinfo(); oder andere legale PHP-Anweisungen nach der URL hinzu, es wird direkt ausgeführt und die Injektion ist erfolgreich

//Sie können Fügen Sie Ihre Werbung, Ihre Sprungadresse usw. hinzu. Um den Zweck eines böswilligen Angriffs zu erreichen

//Verwenden Sie create_functoin(), um eine anonyme Funktion zu erstellen

//Da diese Funktion veraltet ist, einige Die Redakteure werden eine Warnung aussprechen, und es ist sinnlos, mehr zu sagen

//Es reicht zu wissen, dass es diese Funktion bereits auf dieser Welt gab

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

Das obige ist der detaillierte Inhalt voneval() und create_function() in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Callback-Funktion in PHPNächster Artikel:Callback-Funktion in PHP