我正在请求有关最佳方法/函数的帮助,以解析字符串AFTER,它已经是参数。 我已经有很多很多MySql行,避免SQL注入的prepare语句方法是不可能的,因为我没有时间。在我打电话之前,是否有任何函数可以解析字符串上的scape字符:
//$sql_query_string_CLEAN = THE PLACE THE PARSING FUCNTION($sql_query_string);
mysql_query($sql_query_string_CLEAN, $connection);
答案 0 :(得分:2)
根据定义,不可能。举例说明:
您有这样的查询:
SELECT * FROM foo WHERE bar = "$baz"
注射后,它变为:
SELECT * FROM foo WHERE bar = "42" OR "" = ""
嗯......这是一个有效的SQL语句!您无法追溯地找出<em>您的意思。您需要确保在创建查询时保留您的预期含义。逃避或更好的参数化是唯一的方法。
你当然可以尝试向后弯腰并提出你想要的任何启发式和人工智能,但你永远无法正确地完成这一过程。它只是变成了一个猫捉老鼠的游戏,谁可以提出更聪明的解决方法。
"" = ""
太明显了?好吧,让我们试试"a" = "a"
。太明显了? SUBSTR(bar, 1, 0) = ""
...玩得开心,但绝不会在制作中这样做。