【发布时间】:2012-11-19 05:14:27
【问题描述】:
显然 $data 是字符串,我们正在删除满足 reg 表达式的字符,但是 /[\xF0-\xF7].../ 指定了哪些字符?
preg_replace('/[\xF0-\xF7].../', '', $data)
还有这些字符被替换的意义是什么?
编辑赏金:具体来说,这是为了防止发生什么漏洞?这些数据后来用于mysql查询(非pdo),所以我推测这些字符可能涉及某种注入攻击?或不?我试图在我正在阅读的脚本中理解这行代码背后的逻辑。
【问题讨论】:
-
匹配从
xF0到xF7的一系列字符 -
ð ñ ò ó ô õ ö ÷ -
我的意思是,你为什么要转义这些字符?它们不安全吗?
-
@user1796995 它们很难输入,并且如果输入可能会被错误地解释。使用转义可确保为 PHP 提供预期的准确字符。
-
@user1796995 它根本没有逃跑,如果我问你
Would removing some accented letters prevent some exploits ?你会怎么回答?这很可能是可能的。无论如何,有些情况是我们无法想象的,请参阅this answer。最后,我真的不明白你的意思。如果您想提高安全性,那么只需正确使用准备好的语句。仅仅删除几个字符并不能保证任何事情。
标签: php mysql regex utf-8 sql-injection