常見sql注入的防範總結
阿新 • • 發佈:2019-02-07
在平時的開發過程中,我們可能很少會刻意的去為專案做一個sql注入的防範,這是因為你可能因為使用了某些框架,而無意間已經有了對應sql注入的一些防範操作(比如mybatis使用#{XX}傳參,屬於預編譯防範)。今天,我就簡要記錄下前輩們對於sql注入的一些基本防範和相關知識。
什麼是sql注入
往復雜裡說,我也說不出來,就往簡單裡說說吧。sql注入就是通過表單提交或者url等方式,在你系統可執行的sql語句中,插入符合sql語法要求的字串,導致原始sql語句邏輯別打亂,執行了攻擊者的惡意程式碼,從而達到獲取你資料庫敏感資訊或攻擊資料庫的目的。
如何防範
- 嚴格限制資料庫的操作許可權
- 使用PreparedStatement來代替Statement來執行SQL語句,其後只是輸入引數(SQL注入攻擊能得逞是因為在原有SQL語句中加入了新的邏輯,PreparedStatement不允許在不同的插入時間改變查詢的邏輯結構,大部分的SQL注入已經擋住了)
- 在WEB層我們可以過濾使用者的輸入來防止SQL注入比如用Filter來過濾全域性的表單引數(Filter處理使用者request包含的敏感關鍵字,然後replace掉或是讓頁面轉到錯誤頁來提示使用者,這樣就可以很好的防sql注入了)