天天看點

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最全面試題及答案。