sql注入的原因,表面上說是因為拼接字符串,構成sql語句,沒有使用sql語句預編譯,綁定變量。但是更深層次的原因是,將用戶輸入的字符串,當成了“sql語句”來執行。也有部分SQL注入是因為不當的類型處理、不安全的數據庫配置、不合理的查詢集處理、不當的錯誤處理、轉義字符處理不合適、多個提交處理不當等原因產生的,其本質是將用戶的輸入數據作為命令來執行了。
sql 注入防范措施有以下這些:
把應用服務器的數據庫權限降至最低,盡可能地減少 SQL 注入攻擊帶來的危害
避免網站打印出SQL錯誤信息,比如類型錯誤、字段不匹配等,把代碼里的SQL語句暴露出來,以防止攻擊者利用這些錯誤信息進行SQL注入。
對進入數據庫的特殊字符(’’尖括號&*;等)進行轉義處理,或編碼轉換。
所有的查詢語句建議使用數據庫提供的參數化查詢接口,參數化的語句使用參數而不是將用戶輸入變量嵌入到SQL語句中,即不要直接拼接SQL語句。
在測試階段,建議使用專門的 SQL 注入檢測工具進行檢測。網上有很多這方面的開源工具,例如sqlmap、SQLninja等。
善用數據庫操作庫,有些庫包可能已經做好了相關的防護,我們只需閱讀其文檔,看是否支持相應的功能即可。
回答所涉及的環境:聯想天逸510S、Windows 10。
sql注入的原因,表面上說是因為拼接字符串,構成sql語句,沒有使用sql語句預編譯,綁定變量。但是更深層次的原因是,將用戶輸入的字符串,當成了“sql語句”來執行。也有部分SQL注入是因為不當的類型處理、不安全的數據庫配置、不合理的查詢集處理、不當的錯誤處理、轉義字符處理不合適、多個提交處理不當等原因產生的,其本質是將用戶的輸入數據作為命令來執行了。
sql 注入防范措施有以下這些:
把應用服務器的數據庫權限降至最低,盡可能地減少 SQL 注入攻擊帶來的危害
避免網站打印出SQL錯誤信息,比如類型錯誤、字段不匹配等,把代碼里的SQL語句暴露出來,以防止攻擊者利用這些錯誤信息進行SQL注入。
對進入數據庫的特殊字符(’’尖括號&*;等)進行轉義處理,或編碼轉換。
所有的查詢語句建議使用數據庫提供的參數化查詢接口,參數化的語句使用參數而不是將用戶輸入變量嵌入到SQL語句中,即不要直接拼接SQL語句。
在測試階段,建議使用專門的 SQL 注入檢測工具進行檢測。網上有很多這方面的開源工具,例如sqlmap、SQLninja等。
善用數據庫操作庫,有些庫包可能已經做好了相關的防護,我們只需閱讀其文檔,看是否支持相應的功能即可。
回答所涉及的環境:聯想天逸510S、Windows 10。