SQL注入與防範
阿新 • • 發佈:2021-01-20
SQL注入即是指web應用程式對使用者輸入資料的合法性沒有判斷或過濾不嚴,攻擊者可以在web應用程式中事先定義好的查詢語句的結尾上新增額外的SQL語句,在管理員不知情的情況下實現非法操作,以此來實現欺騙資料庫伺服器執行非授權的任意查詢,從而進一步得到相應的資料資訊
比如:
"select * from user where num= '"+ stunum + "'and password ='" + password +"';"
一般來說需要使用者名稱、密碼同時正確時,才可以獲取資料。但是當用戶名輸入為 “ 使用者名稱';--”時,sql語句就變成了
select * from user where num= '使用者名稱';-- and password='密碼';
此時--後面的密碼當作了sql註釋語句,現在可以不使用密碼進行登入。
使用Java中PreparedStatement能夠有效防止SQL注入
其他嚴格注意事件:
1.嚴格資料庫管理許可權
2.封裝資料庫錯誤,任何時間不能將資料庫錯誤暴露給使用者
3.機密資訊禁止明文儲存,mysql使用AES_ENCRYPT/AES_DECRYPT 加密解密。