PHPのeval()とcreate_function()

无忌哥哥
リリース: 2023-04-01 21:04:02
オリジナル
7063 人が閲覧しました

* 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート