可能重复:
When (if ever) is eval NOT evil?
when is eval evil in php?
由于我发现没有其他方法可以将外部文件中的字符串作为代码执行,因此我使用了eval()。我不是特别询问任何代码,因为我的用例场景中的示例是微不足道的 - 我想知道的是在PHP代码中使用eval的危险是什么。
我做了一些关于这个问题的研究,但我找不到能满足我好奇心的答案。我所能找到的只是“执行恶意代码”,“滥用注射”等等。没有例子,也没有详细解释为什么这是一个不好的做法。
有人愿意更深入地回答这个问题吗?
感谢。
答案 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时会出现问题,因为它可能是恶意的。