2016-02-24 146 views
0

如果有人正在向我的基於PHP的應用程序注入MySQL語句。我使用MySQLi真正的轉義字符串,但是攻擊者只是簡單地插入SQL語句。讓我們假設:MySQL聲明注入

http://example.com/?id=1

的攻擊只是注入聲明: http://example.com/?id=1 LIMIT 10

而且,甚至逃避串後,如下的代碼被執行。

SELECT * FROM ex WHERE id = 1 LIMIT 10 
+0

爲什麼你不能使用預處理語句? – chris85

+0

該應用程序相當龐大,我不得不改變每一行。 – Areeb

+0

它沒有任何臨時解決方案嗎? – Areeb

回答

0

MySQLi真正的轉義字符串不防止SQL注入,它只是幫助準備查詢字符串數據和轉義敏感字符。您需要使用Prepared Statements

+0

有什麼辦法可以防止這種情況發生?我沒有使用準備好的語句,任何想法來解決這個真正的快速? – Areeb

+0

@Areeb開始使用預準備語句。對於你描述的特定情況,你知道你需要一個數字。使用'is_numeric'。 – Terminus