[PHP] create_function() 代码注入问题已经被弃用

前端之家收集整理的这篇文章主要介绍了[PHP] create_function() 代码注入问题已经被弃用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在某些老的框架或者cms中还在应用这个函数,建议是换成普通的原生匿名函数

官方文档的解释:

函数在内部执行eval(),因此具有与eval()相同的安全性问题。此外,它还具有不良的性能和内存使用特性。 如果您使用的是PHP 5.3.0或更高版本,则应使用原生匿名函数

例如下面的代码,有见到用create_function做的,换成下面这样

echo preg_replace_callback('~-([a-z])~',function ($match) {
    return strtoupper($match[1]);
},'hello-world');
// 输出 helloWorld

 

 

匿名函数的一些解释和用法:

匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称函数。最经常用作回调函数(callback)参数的值。当然,也有其它应用的情况。
匿名函数目前是通过 Closure 类来实现的。
从父作用域中继承变量。 都应该用 use 语言结构传递进去比如下面这个:

$message = 'hello';
 继承 $message
$example = function () use ($messagevar_dump();
};
echo $example();

 

猜你在找的PHP相关文章