使用PHP eval的风险

时间:2011-01-07 23:33:59

标签: php eval

  

可能重复:
  When (if ever) is eval NOT evil?
  when is eval evil in php?

由于我发现没有其他方法可以将外部文件中的字符串作为代码执行,因此我使用了eval()。我不是特别询问任何代码,因为我的用例场景中的示例是微不足道的 - 我想知道的是在PHP代码中使用eval的危险是什么。

我做了一些关于这个问题的研究,但我找不到能满足我好奇心的答案。我所能找到的只是“执行恶意代码”,“滥用注射”等等。没有例子,也没有详细解释为什么这是一个不好的做法。

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

感谢。

4 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

有关问题,请参阅此链接:

http://www.google.com/search?q=php+why+eval+is+bad

但您不应该使用eval。开发人员真的应该表现得好像eval不存在。也许你能更清楚地解释一下你的情况?诸如获取代码文件的位置,无法使用include的原因等等

等问题

答案 2 :(得分:0)

只要您信任使用eval()致电的代码来源,您就会安全。

如果随机用户提供了您打开eval()的字符串,那么您就有可能会有人向您提供这样的邪恶字符串:

exec("rm -rf /");

您的eval将很乐意运行此字符串,并根据权限删除文件系统中的所有内容。

答案 3 :(得分:0)

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