雙查詢注入簡單來說就是嵌套子查詢注入,子查詢可以簡單的理解在一個select語句里還有一個select,里面的這個select語句就是子查詢。而攻擊者發現當在一個聚合函數,比如count函數后面如果使用分組語句就會把查詢的一部分以錯誤的形式顯示出來,而利用這些報錯信息則可以發動報錯型注入,如果沒有返回報錯信息則可以嘗試盲注。
sql 注入防范措施有以下這些:
把應用服務器的數據庫權限降至最低,盡可能地減少 SQL 注入攻擊帶來的危害。
避免網站打印出SQL錯誤信息,比如類型錯誤、字段不匹配等,把代碼里的SQL語句暴露出來,以防止攻擊者利用這些錯誤信息進行SQL注入。
對進入數據庫的特殊字符(’’尖括號&*;等)進行轉義處理,或編碼轉換。
所有的查詢語句建議使用數據庫提供的參數化查詢接口,參數化的語句使用參數而不是將用戶輸入變量嵌入到SQL語句中,即不要直接拼接SQL語句。
在測試階段,建議使用專門的 SQL 注入檢測工具進行檢測。網上有很多這方面的開源工具,例如sqlmap、SQLninja等。
善用數據庫操作庫,有些庫包可能已經做好了相關的防護,我們只需閱讀其文檔,看是否支持相應的功能即可。
回答所涉及的環境:聯想天逸510S、Windows 10。
雙查詢注入簡單來說就是嵌套子查詢注入,子查詢可以簡單的理解在一個select語句里還有一個select,里面的這個select語句就是子查詢。而攻擊者發現當在一個聚合函數,比如count函數后面如果使用分組語句就會把查詢的一部分以錯誤的形式顯示出來,而利用這些報錯信息則可以發動報錯型注入,如果沒有返回報錯信息則可以嘗試盲注。
sql 注入防范措施有以下這些:
把應用服務器的數據庫權限降至最低,盡可能地減少 SQL 注入攻擊帶來的危害。
避免網站打印出SQL錯誤信息,比如類型錯誤、字段不匹配等,把代碼里的SQL語句暴露出來,以防止攻擊者利用這些錯誤信息進行SQL注入。
對進入數據庫的特殊字符(’’尖括號&*;等)進行轉義處理,或編碼轉換。
所有的查詢語句建議使用數據庫提供的參數化查詢接口,參數化的語句使用參數而不是將用戶輸入變量嵌入到SQL語句中,即不要直接拼接SQL語句。
在測試階段,建議使用專門的 SQL 注入檢測工具進行檢測。網上有很多這方面的開源工具,例如sqlmap、SQLninja等。
善用數據庫操作庫,有些庫包可能已經做好了相關的防護,我們只需閱讀其文檔,看是否支持相應的功能即可。
回答所涉及的環境:聯想天逸510S、Windows 10。