我正在开发一个php项目,我想运行从MySQL数据库获取的代码.注入不安全的代码是不可能的,所以我唯一担心的是性能.我应该使用eval()所以我可以直接运行代码,或者解析它以便call_user_func()运行它吗?
例如,如果我获取的代码是"myfunc(1,2,3); anotherFunc(3,2,1);"
我可以直接eval()来运行代码.
但是对于call_user_func(),我必须解析字符串以便可以运行它.那么在这种情况下使用哪个更好的功能呢?
作为一般规则,我总是尝试尽可能远离 eval()。然而,这个案例看起来是一个很好的候选者。
你说“不安全代码不可能被注入”,所以最大的问题是:数据库中是否有可能存在不工作的代码?
如果没有, eval() 是解决方案,但如果有适当的解析和错误日志记录等可能是更安全的选择。(我相信使用 call_user_func_array() 理论上速度更快,因此任何解析开销可能都可以忽略不计)
| 归档时间: |
|
| 查看次数: |
3231 次 |
| 最近记录: |