WEB攻擊手段及防禦第2篇-SQL注入

概念

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、後端、架構、阿里巴巴等大廠最新面試題

覺得不錯,別忘了點贊+轉發哦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章