zoukankan      html  css  js  c++  java
  • 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();
  • 相关阅读:
    C51学习笔记
    Keil C51与Keil ARM共存
    keil c51笔记
    css实现三角形
    微信小程序倒计时实现
    微信小程序公共组件的引用与控制
    mac上查找nginx安装位置
    charles抓取移动端app数据
    封装react组件——三级联动
    前端基础(http协议相关篇)
  • 原文地址:https://www.cnblogs.com/flzs/p/10390300.html
Copyright © 2011-2022 走看看