2015-08-28 99 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很多! –