php - 如何防范PHP中的正则表达式注入(inject)?为 php 的所有正则表达式函数清理输入的一般规则是什么?

标签 php regex code-injection

寻找有关我应该在正则表达式中转义哪些字符以防止漏洞利用的提示。

例如

Regular Expression Injection

The PCRE function preg_replace() function in PHP allows for an “e” (PREG_REPLACE_EVAL) modifier which means the replacement string will be evaluated as PHP after subsitution. Untrusted input used in the replacement string could therefore inject PHP code to be executed.

或此处:http://hauser-wenz.de/playground/papers/RegExInjection.pdf

一般来说,对于 sql 注入(inject),有很多指南和技巧可以遵循,但找不到太多关于正则表达式注入(inject)的信息

最佳答案

简单的答案:使用preg_replace_callback()相反(它不依赖于用户代码的 eval)。这就是 PHP 5.5 建议您在使用 /e 时执行的操作。

$str = 'CAPS';
$str = preg_replace_callback('/[A-Z]/', function($match) { return strtolower($match[0]); }, $str);
echo $str;

关于php - 如何防范PHP中的正则表达式注入(inject)?为 php 的所有正则表达式函数清理输入的一般规则是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21114365/

相关文章:

PHP mysql注入(inject)保护

security - 如果从外部来源获取字符串以外的其他数据类型是否可能有害?

javascript - 针对远程 URL 对本地 JavaScript 文件进行单元测试

使用 libtidy 的 PHP 扩展编译,但不加载

regex - 正则表达式 perl 抓取文本 block

php - 如何在 PHP 中通过 HTTPS 发出 POST 请求?

java - 非捕获组是否多余?

javascript - 正确测试整数或 N/A 正则表达式

php - 将 C 脚本转换为 PHP

php - 使用 file_get_contents()/PHP 在地理定位中进行字符编码