在严格的preg_match之后,为什么PHP 7 eval()仍然很危险?

时间:2019-07-18 15:56:56

标签: php security eval

为什么在严格的preg_match之后,PHP 7 eval()仍然不安全?

因此,我有一个严格过滤的代码,因此仅允许使用运算符,括号和数字。人们似乎仍然反对使用它,但是除了“哦,这很危险”之外,没有人向我具体说明原因。

那么如何利用以下代码?

以下程序 1.从网址获取查询字符串 2.通过preg_match进行过滤 3. eval()

<?php
    $exp =  $_SERVER["QUERY_STRING"];
    if(preg_match('~^[0-9()+\-*\/]+$~', $exp)){
      eval("echo $exp;");
    } else {
      echo "ERROR";
    }
?>

编辑: https://www.exakat.io/land-where-php-uses-eval/

该网站还讨论了如何将eval()用于Evaluating math or logical expression,这是错误的吗?

0 个答案:

没有答案