
概念
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最全面試題及答案,
推薦去我的博客閱讀更多:
1.Java JVM、集合、多執行緒、新特性系列教程
2.Spring MVC、Spring Boot、Spring Cloud 系列教程
3.Maven、Git、Eclipse、Intellij IDEA 系列工具教程
4.Java、后端、架構、阿里巴巴等大廠最新面試題
覺得不錯,別忘了點贊+轉發哦!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/153789.html
標籤:Java
