php - 如何在 PHP 中禁用 'e' PREG_REPLACE_EVAL 修饰符?

标签 php regex security

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

我的 php.ini 中有这个:

disable_functions = eval

这阻止了大部分可能造成的损害,但我想知道我是否可以做类似的事情来防止除 call_user_func_array() 之外的所有形式的“评估”东西?

最佳答案

Suhosin extension提供一个选项 disable the /e modifier .

顺便说一下,

disable_functions = eval 不会执行您期望的操作(因为 eval 不是函数,而是语言结构)。 Suhosin 扩展再次提供了一个选项 disable eval .

关于php - 如何在 PHP 中禁用 'e' PREG_REPLACE_EVAL 修饰符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7243073/

相关文章:

PHP 计算立方根 x^(1/3) 不起作用

sql - 从字符串中删除特定单词

来自 Grails 的安全插件?

database - 检测 SQL Server 中的故意破坏行为

php - 计算字符串中数字出现的次数

php - 我可以在同一页面上使用多个内容类型吗?

php - 通过 PHP 从 Postgres 正确读取 bool 值

javascript - 所有字母的正则表达式

javascript - .split(/^|\s+/) 和 .split(/s+/) 之间的区别

c# - java 与 c# - 哪个在安全性方面更安全?