使用WAF可以阻止正常的基於UNION的SQL注入,它可以過濾關鍵字如UNION, SELECT
。但我認爲它可以通過SQL的內聯評論語句旁路,如/*!UNION*/
和/*!SELECT*/
內聯註釋如何繞過SQL注入Web應用程序防火牆?
評論聲明僅用於閱讀目的,對吧?如果是這樣,SQL服務器如何在註釋中讀取注入查詢並執行它?
使用WAF可以阻止正常的基於UNION的SQL注入,它可以過濾關鍵字如UNION, SELECT
。但我認爲它可以通過SQL的內聯評論語句旁路,如/*!UNION*/
和/*!SELECT*/
內聯註釋如何繞過SQL注入Web應用程序防火牆?
評論聲明僅用於閱讀目的,對吧?如果是這樣,SQL服務器如何在註釋中讀取注入查詢並執行它?
使用WAF過濾關鍵字毫無意義。它不可能成功。看看這種繞過它的方法列表:http://ferruh.mavituna.com/sql-injection-cheatsheet-oku/(我發現在幾秒鐘內與谷歌鏈接。)
如果代碼被正確寫入,那就沒有必要。
至於你的問題,MySQL的語法是/*!
是針對MySQL的特定命令。它旨在讓您能夠編寫可移植的SQL(可以在任何數據庫上運行),但仍能夠發送MySQL特殊命令。
如果您使用支持數據佔位符的數據庫驅動程序,SQL注入應該不是問題。你試圖做的事後檢測是徒勞的,就像試圖用一個有問題的蒼蠅拍根除蟑螂侵擾一樣。你不可能得到他們全部。
最好的做法是確保不可能首先向您的查詢注入敵對數據。有many examples available on Booby Tables說明如何正確執行此操作。
感謝您的備忘單,但是我已經有同類型的東西了。你能否更詳細地闡述答案的第二部分?如果它是一種特殊的查詢,那麼它將執行有效的查詢並忽略開發者的註釋? – Jones
@ William.Ebe我發現這個:http://dev.mysql.com/doc/refman/5.1/en/comments.html提到它存在,但沒有記錄所有可能的事情。 – Ariel
謝謝。全清! – Jones