2015-08-28 59 views
-3

我正在请求有关最好的方法/函数来解析字符串AFTER,它已经由参数解析的帮助。 我已经有很多很多很多的MySql,准备语句避免SQL注入的方法是不可能的,因为我没有时间。是否有任何功能上的绳子解析花茎人物,我立即打电话前:为Sql注入解析MYSQL字符串

//$sql_query_string_CLEAN = THE PLACE THE PARSING FUCNTION($sql_query_string); 
    mysql_query($sql_query_string_CLEAN, $connection); 

回答

2

根据定义,这是不可能。为了说明:

您有疑问,像这样:

SELECT * FROM foo WHERE bar = "$baz" 

注射后,就变成:

SELECT * FROM foo WHERE bar = "42" OR "" = "" 

嗯...这是一个有效的SQL语句!你不能追溯到你的意思是您需要确保在创建查询时保留您的意图。转义或更好的参数化是唯一的方法。

你当然可以尝试向后弯曲,并提出任何你想要的启发式和人工智能,但是你永远无法正确地将它关闭。它只是一个猫和老鼠的游戏,谁可以提出更聪明的解决方法。

"" = ""太明显了吗?好吧,让我们试试"a" = "a"。太明显了? SUBSTR(bar, 1, 0) = "" ...玩得开心,但从不在生产中这样做。

+1

只写了我自己的答案,但是这通过构建SQL字符串来告诉我们整个故事,其中有一部分信息丢失了属于逻辑的部分和属于变量的部分。 – martinstoeckli

+0

感谢一百万人。我正在跳槽,以便为这个计划做一个半修补程序。代码是一团糟,它不是我的。我被要求保证安全。但是现在,我确定我需要大约2周的时间来完成它......从地面上看,很容易做出好的代码。 THNKS很多! –