发一个文章给官方,请看看PHP中eval函数的危害与正确禁用方法

zht 2019-2-28 1225

最新回复 (10)
  • zht 2019-2-28
    引用 2
    然而网上很多说使用disable_functions禁止掉eval的方法都是错误的!
    其实eval()是无法用php.ini中的disable_functions禁止掉的 :
    because eval() is a language construct and not a function
  • 虚竹 2019-3-1
    引用 3
    Thanks for note.

    实测了下的确如此:
    其实eval()是无法用php.ini中的disable_functions禁止掉的 :
    because eval() is a language construct and not a function

    那么php怎么禁止eval呢?
    如果想禁掉eval可以用php的扩展 Suhosin:
  • zht 2019-3-5
    引用 4
    要不,就麻烦虚竹大哥,升级一下呗。可以方便禁用eval吧。
  • kavid 2019-3-6
    引用 5
    嗯,麻烦虚竹大哥了
  • zht 2019-3-26
    引用 6
    啥时候能更新上这个功能啊?
  • Top丶邪少 2019-3-26
    引用 7
    虚竹 Thanks for note. 实测了下的确如此: 其实eval()是无法用php.ini中的disable_functions禁止掉的 : because eval() is a lan ...
    什么时候更新这个呢
  • 虚竹 2019-3-26
    引用 8
    下个PHP版本更新时。
  • kavid 2019-3-26
    引用 9
    好的,等待更新
  • 虚竹 2019-4-16
    引用 10

    Suhosin还不支持PHP7,仅仅是禁用eval()函数的话,我们考虑使用这个扩展:
    https://github.com/mk-j/PHP_diseval_extension

  • 虚竹 2019-4-17
    引用 11

    已打包 diseval 扩展。

    安装了这个扩展后,PHP 代码中使用 eval()、create_function() 或正规表达式中的 /e 修饰符,将返回如下报错:

    Fatal error: DISEVAL - Use of eval is forbidden in /data/mystack/sites/test.com/www/index.php(3) : eval()'d code on line 1
返回
发新帖