• [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 ($message) {
        var_dump($message);
    };
    echo $example();
  • 相关阅读:
    学习FastDfs(三)
    学习FastDfs(二)
    学习FastDfs(一)
    学习ELK日志平台(五)
    学习ELK日志平台(四)
    学习ELK日志平台(二)
    学习ELK日志平台(一)
    并不对劲的CTS2019
    并不对劲的BJOI2019
    并不对劲的bzoj1095:p2056:[ZJOI2007]捉迷藏
  • 原文地址:https://www.cnblogs.com/taoshihan/p/12883754.html
Copyright © 2020-2023  润新知