寻找关于我应该在正则表达式中转义哪些字符的提示,以防止利用。
e.g
正则表达式注入 PCRE函数preg_replace()函数允许一个“e”(PREG_REPLACE_EVAL)修饰符,这意味着替换字符串在替换后将被计算为PHP。因此,替换字符串中使用的不可信输入可以注入要执行的PHP代码。
或者在这里:http://hauser-wenz.de/playground/papers/RegExInjection.pdf
一般来说,对于sql注入,有许多指南和提示需要遵循,但无法找到关于regex注入的很多内容。
发布于 2014-01-14 13:13:11
简单的答案:改用preg_replace_callback() (它不依赖于用户代码的eval )。这就是PHP5.5建议您在使用/e时所做的事情。
$str = 'CAPS';
$str = preg_replace_callback('/[A-Z]/', function($match) { return strtolower($match[0]); }, $str);
echo $str;发布于 2014-08-21 19:01:54
使用preg_quote引用正则表达式字符:
http://php.net/manual/en/function.preg-quote.php
您通常希望添加分隔符作为第二个参数。
例如:
$q = $_GET['q'];
$q = preg_quote($q, "/");
$replaced = preg_replace("/" . $q . "/", "42", "The quick brown fox jumps over the lazy dog");发布于 2019-03-30 22:35:22
这是只读字母,它忽略了特殊字符:
函数sanitize_letter ($var) {
$var= preg_replace("/[-[\]{}()*+?.,\\^<>&!@#$%^&\/':\";*()_+=$|#]/","",$var);
return $var;
}这只是读取数字,它忽略了特殊字符:
函数sanitize_number ($var) {
$var= preg_replace("/[^0-9]/","",$var);
return $var;
}例如,如何使用上面的函数,,
$pure_id=sanitize_number($_GET'id');
https://stackoverflow.com/questions/21114365
复制相似问题