溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Java中怎么避免sql注入

發(fā)布時(shí)間:2022-01-13 12:52:49 來源:億速云 閱讀:128 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下Java中怎么避免sql注入,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

前言

sql注入是web開發(fā)中最常見的一種安全漏洞。可以用它來從數(shù)據(jù)庫(kù)獲取敏感信息、利用數(shù)據(jù)庫(kù)的特性執(zhí)行添加用戶、導(dǎo)出文件等一系列惡意操作,甚至有可能獲取數(shù)據(jù)庫(kù)乃至系統(tǒng)用戶最高權(quán)限。

造成sql注入的原因:

程序沒有有效過濾用戶的輸入,使攻擊者成功的向服務(wù)器提交惡意的SQL腳本,程序在接收后錯(cuò)誤的將攻擊者的輸入作為SQL語(yǔ)句的一部分執(zhí)行,導(dǎo)致原始的查詢邏輯被改變,執(zhí)行了攻擊者精心構(gòu)造的惡意SQL語(yǔ)句。

如從用戶表根據(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ù)庫(kù)的操作權(quán)限,給連接數(shù)據(jù)庫(kù)的用戶提供滿足需要的最低權(quán)限,最大限度的減少注入攻擊對(duì)數(shù)據(jù)庫(kù)的危害

  • 對(duì)進(jìn)入數(shù)據(jù)庫(kù)的特殊字符進(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 頁(yè)面

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ù)庫(kù)連接,為每個(gè)應(yīng)用使用單獨(dú)的權(quán)限有限的數(shù)據(jù)庫(kù)連接。

4.不要把機(jī)密信息直接存放,加密或者h(yuǎn)ash掉密碼和敏感的信息。

5.應(yīng)用的異常信息應(yīng)該給出盡可能少的提示,最好使用自定義的錯(cuò)誤信息對(duì)原始錯(cuò)誤信息進(jìn)行包裝。

以上是“Java中怎么避免sql注入”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI