什么是 create_function()
create_function() 是 PHP 早期提供的一个用来创建匿名函数的函数:
$func = create_function('$a,$b', 'return $a + $b;');
echo $func(1, 2); // 输出 3
第一个参数是函数的参数列表(字符串形式),第二个参数是函数体(也是字符串)。
也就是说:它会把字符串当作代码执行!
从 PHP 7.2 开始,这个函数已经被废弃,因为太容易被滥用了
举个危险的例子
$input = $_GET['code'];
$func = create_function('$x', "return $input;");
echo $func(0);
如果用户访问:
example.php?code=phpinfo()
代码就会变成:
$func = create_function('$x', "return phpinfo();");
然后服务器就会执行 phpinfo()造成信息泄露
注入
<?php
error_reporting(0);
$sort_by = $_GET['sort_by'];
$sorter = 'strnatcasecmp';
$databases

最低0.47元/天 解锁文章
2078

被折叠的 条评论
为什么被折叠?



