寻找关于在正则表达式中应该转义哪些字符以防止漏洞利用的提示。
例如
正则表达式注入
PHP中的PCRE函数preg_replace()函数允许使用“e”(PREG_REPLACE_EVAL)修饰符,这意味着替换字符串在替换后将被评估为PHP。因此,替换字符串中使用的不可信输入可能会插入要执行的PHP代码。
或者在这里:http://hauser-wenz.de/playground/papers/RegExInjection.pdf
一般来说,对于sql注入,有很多指南和技巧可以遵循,但找不到太多关于regex注入的信息
4条答案
按热度按时间wwtsj6pe1#
答案很简单:使用
preg_replace_callback()
(它不依赖于eval
的用户代码)。这是PHP 5.5在使用/e
时建议您执行的操作。6ojccjat2#
使用
preg_quote
引用正则表达式字符:http://php.net/manual/en/function.preg-quote.php
您通常希望添加分隔符作为第二个参数。
例如
quhf5bfb3#
您应该使用Prepared Patterns-有点像SQL中的预处理语句-它们可以保护您免受任何类型的模式/输入
然后用这个模式
fkvaft9z4#
只读取字母,忽略特殊字符:
public void run($var){
这只读取数字,忽略特殊字符:
public void run($var){
例如如何使用上述功能,
$pure_id=sanitize_number($_GET['id']);