Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.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评估的风险_Php_Eval - Fatal编程技术网

使用PHP评估的风险

使用PHP评估的风险,php,eval,Php,Eval,可能的重复项: 因为我找不到其他方法从外部文件中以代码形式执行字符串,所以我求助于使用eval()。我并不是特别询问任何代码,因为我的用例场景中的示例都是微不足道的——我想知道的是在php代码中使用eval有什么危险 我对这个问题做了一些研究,但我找不到任何能满足我好奇心的答案。我所能找到的只是诸如“执行恶意代码”、“滥用注入”之类的东西。没有例子,也没有详细解释为什么这是一种如此糟糕的做法 有人愿意更深入地回答这个问题吗 谢谢。查看前面的问题: 有关问题,请参阅以下链接: 但是您不需要

可能的重复项:

因为我找不到其他方法从外部文件中以代码形式执行字符串,所以我求助于使用eval()。我并不是特别询问任何代码,因为我的用例场景中的示例都是微不足道的——我想知道的是在php代码中使用eval有什么危险

我对这个问题做了一些研究,但我找不到任何能满足我好奇心的答案。我所能找到的只是诸如“执行恶意代码”、“滥用注入”之类的东西。没有例子,也没有详细解释为什么这是一种如此糟糕的做法

有人愿意更深入地回答这个问题吗


谢谢。

查看前面的问题:


有关问题,请参阅以下链接:


但是您不需要使用
eval
。开发人员真的应该表现得好像
eval
不存在一样。也许你能更清楚地解释你的情况?诸如从何处获取代码文件、为什么不能使用
include
等问题。

只要您可以信任使用
eval()调用的代码的来源,您就会安全

如果随机用户提供您调用的字符串
eval()
on,那么您将面临有人向您提供如下有害字符串的风险:

exec("rm -rf /");

您的
eval
将愉快地运行此字符串,并且根据权限,它将删除文件系统中的所有内容。

如果您正在
eval
处理您(或您信任的人)编写的服务器端代码,而这些代码不可公开访问,那么这并不比执行常规PHP代码更危险。当您依赖用户输入来执行评估时,就会出现问题,因为它可能是恶意的。

除了安全问题,您通常不需要它。您想做什么?您不想评估用户提供的任何内容。您可以在此处找到许多关于此主题的帖子:。包括这里的这个:。简而言之,如果您确实知道代码的源代码,那么它本身并没有什么问题,但是为其他程序员清理代码可能会非常麻烦。完全重复:我正在处理一个类,该类应该根据给定的JSON配置生成表单。这个类实际上并不复杂,但我想将这些表单中的小部件外部化(如从外部文件读取)。例如:配置说明在一个特定的地方应该有一个文本框->类解析这个文本框,获取并evals()外部文本框字符串(html和php的混合),并将其放入一个数组中,该数组存储其中的所有小部件。该数组稍后将传递给控制器/视图对进行渲染。冗长,对此我深表歉意。:)我想最好把这篇文章作为对这个问题的评论(因为它们是重复的)…@ChristopheD:你可能是对的-谢谢。