如何禁用PHP中的'e'PREG_REPLACE_EVAL修饰符?

rob*_*rke 11 php regex security

我想知道如何在PHP的正则表达式系统中禁用eval修饰符,例如.preg_replace('/.*/e', $code, '.').如果有人设法将狡猾的代码放到服务器上,那么它可以用来代替eval.我最近遇到了一个问题,来自woothemes的wordpress主题有一个安全漏洞,允许黑客上传后门服务器管理类型脚本.

我在我的php.ini中有这个:

disable_functions = eval
Run Code Online (Sandbox Code Playgroud)

这可以防止大部分可能造成的伤害,但我想知道我是否可以做类似的事情以防止所有形式的'eval'除了这些call_user_func_array()东西?

Nik*_*kiC 9

了Suhosin扩展提供了一个选项来禁用/e修改.

disable_functions = eval顺便说一句,不会做你期望的事情(因为eval它不是一个函数,而是一个语言结构).Suhosin扩展再次提供了禁用eval选项.