Java面試題解析之判斷以及防止SQL注入
本文研究的主要是Java面試題中的一個(gè)比較常見的題目,判斷及防止SQL注入的問題,具體介紹如下。
SQL注入是目前黑客最常用的攻擊手段,它的原理是利用數(shù)據(jù)庫(kù)對(duì)特殊標(biāo)識(shí)符的解析強(qiáng)行從頁面向后臺(tái)傳入。改變SQL語句結(jié)構(gòu),達(dá)到擴(kuò)展權(quán)限、創(chuàng)建高等級(jí)用戶、強(qiáng)行修改用戶資料等等操作。
那怎么判斷是否被SQL注入了呢?
通過SQL注入的原理我們知道,判斷SQL注入可以通過頁面?zhèn)魅氲臄?shù)據(jù),后臺(tái)不應(yīng)該相信從后臺(tái)傳入的任何數(shù)據(jù)特別是特殊整型參數(shù)和特殊字符參數(shù)!
防止SQL注入其實(shí)也很簡(jiǎn)單
1.檢查變量數(shù)據(jù)類型和格式
只要是固定格式的變量,在SQL語句執(zhí)行前,應(yīng)該嚴(yán)格按照固定格式檢查,確保變量是我們預(yù)想的格式!
2.過濾特殊符號(hào)
對(duì)于無法確定固定格式的變量,一定要進(jìn)行特殊符號(hào)過來或轉(zhuǎn)移處理,一面之星SQL時(shí)有歧義。
當(dāng)我們上傳圖片的時(shí)候
enctype=\”multipart/form-data\” enctype=”multipart/form-data”
沒有“/“,表單中enctype=”multipart/form-data”的意思,是設(shè)置表單的MIME編碼。默認(rèn)情況,這個(gè)編碼格式是application/x-www-form-urlencoded,不能用于文件上傳;只有使用了multipart/form- data,才能完整的傳遞文件數(shù)據(jù),進(jìn)行下面的操作.
3.綁定變量,使用預(yù)編譯語句
實(shí)際上,綁定變量使用預(yù)編譯語句是預(yù)防SQL注入的最佳方法,使用預(yù)編譯的SQL語句語義不會(huì)發(fā)生改變。在SQL語句中,變量用問號(hào)?表示,黑客即使本事再大,也無法改變SQL語句的格式,從根本上杜絕了SQL注入攻擊的發(fā)生。
4.數(shù)據(jù)庫(kù)信息加密安全
有時(shí)候數(shù)據(jù)庫(kù)信息泄露了,我們應(yīng)該對(duì)數(shù)據(jù)庫(kù)的密碼等信息進(jìn)行加密(MD5等),這樣信息泄露,損失也可以在控制在一定范圍內(nèi)。
使用JSP的時(shí)候要注意
1.不要隨意開一生產(chǎn)環(huán)境匯總Webserver的錯(cuò)誤顯示。
2.永遠(yuǎn)不要相信來自用戶端的變量輸入,有固定格式的變量一定要嚴(yán)格檢查對(duì)應(yīng)的格式,沒有固定格式的變量需要對(duì)引號(hào)等特殊字符進(jìn)行必要的過濾轉(zhuǎn)義。
3.使用預(yù)編譯綁定變量的SQL語句
4.做好數(shù)據(jù)庫(kù)賬號(hào)權(quán)限管理
5.嚴(yán)格加密處理用戶機(jī)密信息
一個(gè)好的程序一定要注意安全性,否則只適合練手。
總結(jié)
以上就是本文關(guān)于Java面試題解析之判斷以及防止SQL注入的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
相關(guān)文章
基于SpringBoot實(shí)現(xiàn)上傳2種方法工程代碼實(shí)例
這篇文章主要介紹了基于SpringBoot實(shí)現(xiàn)上傳工程代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
Java中compareTo()和compare()方法使用及區(qū)別詳解
這篇文章主要介紹了Java中compareTo()和compare()方法使用及區(qū)別的相關(guān)資料,compareTo()方法用于定義類的自然排序,適用于具有單一、固定排序方式的場(chǎng)景,compare()方法提供自定義排序的靈活性,適用于需要根據(jù)不同規(guī)則對(duì)對(duì)象進(jìn)行排序的場(chǎng)景,需要的朋友可以參考下2025-01-01
SpringBoot整合Groovy腳本實(shí)現(xiàn)動(dòng)態(tài)編程詳解
這篇文章主要為大家介紹了SpringBoot整合Groovy腳本實(shí)現(xiàn)動(dòng)態(tài)編程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
詳解SpringBoot中的統(tǒng)一結(jié)果返回與統(tǒng)一異常處理
這篇文章主要將通過詳細(xì)的討論和實(shí)例演示來幫助你更好地理解和應(yīng)用Spring Boot中的統(tǒng)一結(jié)果返回和統(tǒng)一異常處理,感興趣的小伙伴可以了解下2024-03-03
Java之JFrame輸出Helloworld實(shí)例
這篇文章主要介紹了Java之JFrame輸出Helloworld的方法,以輸出Helloworld的實(shí)例分析了JFrame的簡(jiǎn)單入門技巧,需要的朋友可以參考下2015-02-02
java substring(a)與substring(a,b)的使用說明
這篇文章主要介紹了java substring(a)與substring(a,b)的使用說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-10-10

