【发布时间】:2011-01-25 18:25:44
【问题描述】:
关于 eval() 作为函数的官方文档说:
除其他外,这对于将代码存储在数据库文本字段中以供以后执行很有用。
我对此感到非常困惑。 PHP 文档是否建议将 PHP 行存储到数据库中?什么?这不是很不安全吗?
如果我知道数据库中有一个作为 PHP 执行的字符串怎么办?这不是非常危险吗?我只需要一个 Sql 注入来对那个站点做任何我想做的事情,我想做的任何事情。我可以删除整个数据库,我可以从脚本中获取所有内容,我可以做所有事情。
这怎么会有这么大的帮助?
您能否提供一些示例,说明eval() 的用途?
另外,我可能遗漏了一些东西,为什么我看到了一些类似的代码:
eval("if (is_int($int)) { return false }");
而不仅仅是
if (is_int($int)) { return false }
但是,正如我所说,我可能遗漏了一些东西:什么?
【问题讨论】:
-
好问题。我不知道
eval()的用途不能用其他东西做得更好。但我在听…… -
这个点好像被打到地下了,
eval()不好,我们明白了。 -
写了一个小脚本解析器后,我可以证明你有 eval 的有效用途。但除了边缘情况,eval() 只是 include() 的另一个名称,它不依赖于文件。
-
eval 用于补充变量变量和直接sql字符串操作。现在不想制造任何不公平或不平衡的东西! ;-)
-
总体来说,有它还好。只是不要使用它。 :|