【发布时间】:2011-05-09 10:26:49
【问题描述】:
我在一个反sql注入例程中看到了这行,那么它是什么意思呢?
ereg_replace('(%)', '\\\1', $str);
【问题讨论】:
-
一旦你对
ereg_replace有了很好的理解,你应该立即转移到preg_replace。ereg函数现已过时。
标签: php sql regex sql-injection
我在一个反sql注入例程中看到了这行,那么它是什么意思呢?
ereg_replace('(%)', '\\\1', $str);
【问题讨论】:
ereg_replace有了很好的理解,你应该立即转移到preg_replace。 ereg 函数现已过时。
标签: php sql regex sql-injection
它通过将% 替换为\% 来转义百分号。 PHP有更好的转义字符的方法,即addcslashes:
addcslashes($str, '%');`
另请注意,不推荐使用 ereg 函数系列,取而代之的是它们的 preg 等效函数。
【讨论】:
% 在 SQL 查询中具有特殊含义(它就像用于模式匹配的通配符),而 \% 始终是文字百分号。
mysql_real_escape_string 不处理 %(参见最后一条注释)。对于准备好的语句,它可能取决于库。不过,我并不是说正则表达式是正确的(它肯定过于冗长)。