PHPのeval()とcreate_function()

无忌哥哥
无忌哥哥オリジナル
2018-06-28 14:56:287064ブラウズ

* eval() および create_function()

* 1. eval()

* 1. eval() 関数は、PHP コードに従って文字列を計算します

* 2. 文字列は有効な PHP コードである必要があり、セミコロン

* 3. コード文字列内で return ステートメントが呼び出されない場合は、NULL

* 4 。コードの解析エラーである場合、 eval() 関数は false

* 5 を返します。この関数は、後で計算するためにデータベースのテキスト フィールドにコードを保存する場合に便利です。

* 2 , create_function( 'parameter','function body code'): 匿名関数を作成します

//次の 2 つのステートメントの関数はまったく同じです

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

//上の 2 つの関数は同じですが、ステートメントは同じですが、戻り値は同じではありません

//したがって、eval() の戻り値を参照したい場合は、return

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

//eval() を使用する必要があります。インジェクション攻撃のデモ

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

//URL の後に ?p=phpinfo(); またはその他の正当な PHP ステートメントを追加すると、直接実行され、インジェクションが成功します。

//広告やジャンプ アドレスなどを追加します。 悪意のある攻撃の目的を達成するには

#//create_functoin() を使用して匿名関数を作成します

#//この関数は非推奨になっているため、編集者は警告を発しますが、これ以上言うのは無駄です

//この機能がこの世界に存在したことを知っていれば十分です

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

以上がPHPのeval()とcreate_function()の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。