• PHP中eval函数的危害与正确禁用方法


    其实 eval()是无法用php.ini中的 disable_functions禁止掉的 :eval是zend的,因此不是PHP_FUNCTION 函数;

    如果想禁掉eval可以用php的扩展 Suhosin: 安装Suhosin后在php.ini中load进来Suhosin.so,再加上 suhosin.executor.disable_eval = on即可!

    总结,php的eval函数在php中是无法禁用的,因此我们也只有使用插件了!

    代码:

    1
    eval("echo'hello world';");

    上边代码等同于下边的代码:

    echo"hello world";

    在浏览器中都输出:hello world

    运用eval()要注意几点:

    1.eval函数的参数的字符串末尾一定要有分号,在最后还要另加一个分号(这个分号是php限制)

    2.注意单引号,双引号和反斜杠的运用。如果参数中带有变量时,并且变量有赋值操作的话,变量前的$符号钱一定要有来转义。如果没有赋值操作可以不需要。

    代码:

    1
    2
    $a=100;
    eval("echo$a;");

    因为没有赋值操作,所以可以不用来转义$.等同于以下代码:

    1
    2
    $a=100;
    eval("echo$a;")

    3.注意在命令式字符串(包括分号)两边必须要有双引号或者根据需要用单引号。否则报错。

    命令式字符串是指:字符串中包括echo、print之类的命令的时候。

    如果参数只有一个变量则可以不用。例如:

    1
    2
    3
    4
    5
    6
    7
    $func =<<<FUNC
    function test(){
      echo "test eval function";
    }
    FUNC;
    eval($func);
    test();
  • 相关阅读:
    oracle 例外
    Help with Intervals(集合的交并补,线段树)
    Mex(线段树的巧妙应用)
    hdu4578Transformation(线段树多个lz标记)
    Coder(线段树)
    Ice-cream Tycoon9(线段树)
    Partition(线段树的离线处理)
    ACM学习大纲(转)
    Codeforces Round #250 (Div. 1)
    记次浙大月赛 134
  • 原文地址:https://www.cnblogs.com/flzs/p/10390300.html
Copyright © 2020-2023  润新知