对于PHP EVAL限制(Restrictions for PHP eval)

2019-10-17 11:41发布

我有我需要评估的逻辑表达式。 其参数参数化的一些expresison模板后,这些表情看起来是这样的:

$expr1 = '1 or 0 and not(0 or 0)';
$expr2 = "'editor' == 'editor' and not(0 = 1) and 10 > 5";

所以,我需要在它们之间处理的数字,字符串,以及逻辑和代数运算符和圆括号。

当使用PHP的eval我还获得无担保不良的能力,就像系统功能调用,等等。

那么,有没有什么办法来限制PHP EVAL,或可能有一些更好的解决办法?

谢谢!

Answer 1:

你可以使用一个标记来检查表达式不包含函数调用。

看到更安全的eval()类的一个例子。



Answer 2:

好吧,我得到了另一种解决方案。 我明白,我可以使用PHP DOMXPath ::评估,以评估我的逻辑表达式。 所以,我得到了一个工作的解决方案,它没有安全问题。 我想我的问题就解决了:)



文章来源: Restrictions for PHP eval