Java中如何避免sql注入實(shí)例詳解
前言
sql注入是web開發(fā)中最常見的一種安全漏洞??梢杂盟鼇韽臄?shù)據(jù)庫獲取敏感信息、利用數(shù)據(jù)庫的特性執(zhí)行添加用戶、導(dǎo)出文件等一系列惡意操作,甚至有可能獲取數(shù)據(jù)庫乃至系統(tǒng)用戶最高權(quán)限。
造成sql注入的原因:
程序沒有有效過濾用戶的輸入,使攻擊者成功的向服務(wù)器提交惡意的SQL腳本,程序在接收后錯(cuò)誤的將攻擊者的輸入作為SQL語句的一部分執(zhí)行,導(dǎo)致原始的查詢邏輯被改變,執(zhí)行了攻擊者精心構(gòu)造的惡意SQL語句。
如從用戶表根據(jù)用戶名admin和密碼123查用戶信息
select * from User where username = 'admin' and password = '123'
攻擊者惡意修改用戶名參數(shù) admin-->xxxx or 1=1 --
select * from user where username = 'xxxx' or 1=1 --and password = '123'
SQL中--是注釋標(biāo)記,如果上面這個(gè)SQL被執(zhí)行,就可以讓攻擊者在不知道任何用戶名和密碼的情況下成功登錄。所以,防止sql注入至關(guān)重要
預(yù)防sql注入方法:
- 嚴(yán)格限制Web應(yīng)用的數(shù)據(jù)庫的操作權(quán)限,給連接數(shù)據(jù)庫的用戶提供滿足需要的最低權(quán)限,最大限度的減少注入攻擊對(duì)數(shù)據(jù)庫的危害
- 對(duì)進(jìn)入數(shù)據(jù)庫的特殊字符進(jìn)行轉(zhuǎn)義處理,或編碼轉(zhuǎn)換
- 校驗(yàn)參數(shù)的數(shù)據(jù)格式是否合法(可以使用正則或特殊字符的判斷)
- 預(yù)編譯SQL (Java中使用PreparedStatement),參數(shù)化查詢方式,避免SQL拼接
- 使用mybatis的"#{}“預(yù)編譯,將傳入的值按照字符串的形式進(jìn)行處理
- 發(fā)布前,利用工具進(jìn)行SQL注入檢測(cè)
- 報(bào)錯(cuò)信息不要包含SQL信息輸出到 Web 頁面
java 有效的防止SQL注入
1.永遠(yuǎn)不要信任用戶的輸入。對(duì)用戶的輸入進(jìn)行校驗(yàn),可以通過正則表達(dá)式,或限制長(zhǎng)度;對(duì)單引號(hào)和雙"-"進(jìn)行轉(zhuǎn)換等。
2.永遠(yuǎn)不要使用動(dòng)態(tài)拼裝sql,可以使用參數(shù)化的sql或者直接使用存儲(chǔ)過程進(jìn)行數(shù)據(jù)查詢存取。
3.永遠(yuǎn)不要使用管理員權(quán)限的數(shù)據(jù)庫連接,為每個(gè)應(yīng)用使用單獨(dú)的權(quán)限有限的數(shù)據(jù)庫連接。
4.不要把機(jī)密信息直接存放,加密或者h(yuǎn)ash掉密碼和敏感的信息。
5.應(yīng)用的異常信息應(yīng)該給出盡可能少的提示,最好使用自定義的錯(cuò)誤信息對(duì)原始錯(cuò)誤信息進(jìn)行包裝。
總結(jié)
到此這篇關(guān)于Java中如何避免sql注入的文章就介紹到這了,更多相關(guān)Java避免sql注入內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
idea2020.1.3 手把手教你創(chuàng)建web項(xiàng)目的方法步驟
這篇文章主要介紹了idea 2020.1.3 手把手教你創(chuàng)建web項(xiàng)目的方法步驟,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
mybatis-plus 新增/修改如何實(shí)現(xiàn)自動(dòng)填充指定字段
這篇文章主要介紹了mybatis-plus 新增/修改實(shí)現(xiàn)自動(dòng)填充指定字段方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
java 遍歷request中的所有表單數(shù)據(jù)的實(shí)例代碼
下面小編就為大家?guī)硪黄猨ava 遍歷request中的所有表單數(shù)據(jù)的實(shí)例代碼。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-09-09

