概念
SQL注入即通過WEB表單域插入非法SQL命令,當服務器端構造SQL時採用拼接形式,非法SQL與正常SQL一併構造並在數據庫中執行。
簡單的SQL注入的例子:
例1:test123456 or 1=1;
加上or 1=1,如果沒有防止SQL注入,這樣攻擊者就能成功登錄。
例2:test123456';drop table xxx--
這樣會刪除一個表,--後面的就是註釋
防禦手段
1、禁止採用SQL拼接的形式
這也是最重要的一點,要採用參數化的形式。如mybatis參數佔位符要使用##,它會給參數默認帶上單引號,所有輸入輸入的字符當作一個參數來處理,而不是命令,不要使用$$,它不會帶單引號有SQL注入的風險。
2、過濾或轉義特殊字符
特殊字符包括如:單引號、槓等,或者使用正則表達式過濾如drop table、delete..、update..等危害數據庫安全的請求,前後端都要採用措施。
3、數據庫用戶權利最小化
不要使用最大權限的管理員進行連接,爲每個應用使用獨立的所在庫的賬號進行連接,這樣使權利最小化。
4、發生異常不要使用錯誤回顯,
即顯示默認的服務器500錯誤,把代碼及表名信息直白顯示在網頁上,這樣攻擊者就能通過惡意操作使網頁出現500錯誤從而看到數據庫表名等內部信息。
5、加密存儲敏感信息
用戶敏感信息如身份證、手機號、郵箱、卡號等一定要加密存儲,而且要妥善保密密鑰。
關注公衆號Java技術棧回覆"面試"獲取我整理的2020最全面試題及答案。
推薦去我的博客閱讀更多:
2.Spring MVC、Spring Boot、Spring Cloud 系列教程
3.Maven、Git、Eclipse、Intellij IDEA 系列工具教程
覺得不錯,別忘了點贊+轉發哦!