什么情况需要使用eval(),因为没有其他选择?

use*_*373 8 php performance eval

我知道eval,出于速度和安全原因,我应该避免使用JavaScript.但就PHP而言,很少提及安全性.更常见的是,由于偶然使用,程序运行速度比应该慢eval.

你应该在什么具体情况下使用,eval因为没有别的办法呢?

为清楚起见:

我们不是在谈论用户提供的数据.所以问题集中在纯粹和完全受控的服务器端有效使用eval.

Pas*_*TIN 10

使用evalPHP中的eval代码的安全性问题与Javascript中的相同:如果您评估某些代码,则必须确定它的来源以及它包含的内容.

安全影响甚至可能更大,因为PHP可以访问您的数据库(以及其他内容) - 这意味着它可以用来窃取/破坏应用程序依赖的几乎所有信息!

在Javascript中,他们说"eval是邪恶的 "; 它在PHP中可能也是如此,它在Javascript中也是如此.


现在,关于你无法避免使用的具体情况eval......好吧,在PHP开发中作为我的日常工作4年,我不记得曾经eval在我自己的代码中使用过^^

但是,例如,eval当您将某些代码存储在数据库中而不是将其缓存在文件中(可能包含在内)时,您需要的情况就是这种情况的例子- 某些CMS允许部分PHP代码出现例如,在管理部分输入.

  • +1我会说,由于磁盘,数据库和任意网络访问,它在PHP**中肯定比在JavaScript中更邪恶. (4认同)

Sar*_*raz 0

我知道出于速度和安全原因,应避免在 JavaScript 中使用 eval。但就 php 而言,很少有人提到安全性。更常见的是,由于随意使用 eval,您的程序运行速度比应有的速度慢。

eval在 php 中也是邪恶的

在什么特定情况下应该使用 eval() 因为没有其他方法可以解决它?

首先,我们尝试尽可能避免它,但如果您确实必须使用它来执行某些代码,那么您将不得不使用它,但正如所说的那样,它是邪恶的,您需要自行承担使用的风险

底线:

无论如何,绝不允许用户输入与 一起运行eval(除非您知道自己在做什么/冒着风险)