什么时候(如果有)eval 不是邪恶的?
尽管人们普遍认为 PHP 的 eval 函数是最后的手段,但它仍然可能在某些场景下具有一定的价值。根据 PHP 5.3 的 LSB 和闭包,我们探讨是否存在任何可能的情况,其中 eval 仍然是最佳或唯一的选择。
答案:
当 eval通常应该避免,在以下情况下可能是合理的:
-
计算数值表达式:执行数值计算或 PHP 的其他“安全”子集有时可以从 eval 中受益。
-
单元测试:创建具有通过标准测试方法无法轻松实现的特殊要求的测试用例。
-
交互式 PHP“Shell”:构建接受并执行用户提供的代码片段的命令行界面。
-
受信任的 var_export 的反序列化:从从可信来源获得的序列化字符串中恢复数据结构。
-
模板语言:利用自定义模板引擎中的eval动态生成和执行代码片段。
-
创建后门:遗憾的是,eval可能被恶意行为者用来建立后门未经授权的访问。
- 与 PHP 对于针对较旧 PHP 版本的项目,可能需要进行评估以弥补新功能的缺失。
-
语法检查(可能不安全):虽然不完全安全,但可以使用 eval 检查提供的代码的语法。
以上是PHP 中的 eval 什么时候不是邪恶的?的详细内容。更多信息请关注PHP中文网其他相关文章!