防范 SQL 注入攻擊,我在網絡上搜尋了一些方法,僅供參考建議。
把應用服務器的數據庫權限降至最低,盡可能地減少 SQL 注入攻擊帶來的危害
避免網站打印出SQL錯誤信息,比如類型錯誤、字段不匹配等,把代碼里的SQL語句暴露出來,以防止攻擊者利用這些錯誤信息進行SQL注入。
對進入數據庫的特殊字符(’’尖括號&*;等)進行轉義處理,或編碼轉換。
所有的查詢語句建議使用數據庫提供的參數化查詢接口,參數化的語句使用參數而不是將用戶輸入變量嵌入到SQL語句中,即不要直接拼接SQL語句。
在測試階段,建議使用專門的 SQL 注入檢測工具進行檢測。網上有很多這方面的開源工具,例如sqlmap、SQLninja等。
善用數據庫操作庫,有些庫包可能已經做好了相關的防護,我們只需閱讀其文檔,看是否支持相應的功能即可。
所謂SQL注入,就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。具體來說,它是利用現有應用程序,將(惡意)的SQL命令注入到后臺數據庫引擎執行的能力,它可以通過在Web表單中輸入(惡意)SQL語句得到一個存在安全漏洞的網站上的數據庫,而不是按照設計者意圖去執行SQL語句。
sql 注入防范措施有以下這些:
把應用服務器的數據庫權限降至最低,盡可能地減少 SQL 注入攻擊帶來的危害
避免網站打印出SQL錯誤信息,比如類型錯誤、字段不匹配等,把代碼里的SQL語句暴露出來,以防止攻擊者利用這些錯誤信息進行SQL注入。
對進入數據庫的特殊字符(’’尖括號&*;等)進行轉義處理,或編碼轉換。
所有的查詢語句建議使用數據庫提供的參數化查詢接口,參數化的語句使用參數而不是將用戶輸入變量嵌入到SQL語句中,即不要直接拼接SQL語句。
在測試階段,建議使用專門的 SQL 注入檢測工具進行檢測。網上有很多這方面的開源工具,例如sqlmap、SQLninja等。
善用數據庫操作庫,有些庫包可能已經做好了相關的防護,我們只需閱讀其文檔,看是否支持相應的功能即可。