Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将动态类与PHP eval组合时有什么风险?_Php_Eval - Fatal编程技术网

将动态类与PHP eval组合时有什么风险?

将动态类与PHP eval组合时有什么风险?,php,eval,Php,Eval,我正在阅读:以及网上其他一些关于何时使用eval和何时不使用eval的指南。这些帖子都不能真正回答我关于运行时动态类合成的安全问题 背景:由于我们不能使用PHP5.4 traits来正确地将类混入到彼此中,所以我们需要另一种解决方案来获得动态混入。因此,我们在Github上发现了这个特殊的类:它正是我们想要的 我不是一个真正的专家,在潜在的安全风险方面评估这样的代码,但可能Stackoverflow上有人知道这种方法的风险是什么 据我所知,只有在 要混合到另一个类中的类可以从外部访问和修改,例如

我正在阅读:以及网上其他一些关于何时使用eval和何时不使用eval的指南。这些帖子都不能真正回答我关于运行时动态类合成的安全问题

背景:由于我们不能使用PHP5.4 traits来正确地将类混入到彼此中,所以我们需要另一种解决方案来获得动态混入。因此,我们在Github上发现了这个特殊的类:它正是我们想要的

我不是一个真正的专家,在潜在的安全风险方面评估这样的代码,但可能Stackoverflow上有人知道这种方法的风险是什么

据我所知,只有在

  • 要混合到另一个类中的类可以从外部访问和修改,例如file或RPC访问
  • 用户可以访问正在运行的上下文,即周围的代码加载插件代码
  • 用户可以访问应用程序的工作内存并在那里更改数据
  • 这些情况都没有在我们的应用程序中给出,但我不确定在以这种方式使用eval时是否需要考虑其他条件


    谢谢。

    Eval基本上是不好的,因为它是
    Eval()
    :D

    不严重:

    你不应该编写一些源代码并将其放入eval。只要组成源代码的脚本具有任何依赖的数据源,如DB后端、文件系统读取(尤其是文本)文件或(更糟糕的是)某些表单数据,就始终有可能注入侵入性和破坏性代码。(例如,
    ;exec('rm-rf/');

    使用Decorator模式可能会对您有所帮助。
    请阅读并作为了解装饰图案的入门。

    您好,感谢您的回答,但很抱歉,除了eval之外,它并没有真正揭示安全风险是邪恶的。然后,decorator模式很好,但这不是运行时真正的条件/动态类组合,而且非常有限,再加上它创建了我们希望避免的更多膨胀。再次感谢!那么你的课程应该有什么目的呢?当然也有代码生成器,例如在条令或符号中。也许我还没有完全明白你想要做什么。几乎所有的,从日志记录,变量解析,调试,权限描述符,以及许多其他我需要添加到现有类中的东西。问题是静态代码生成器是无用的,因为即使要混合的类也是由组合而成的。