欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中如何避免sql注入實例詳解

 更新時間:2022年01月13日 10:33:38   作者:UnIQUE?Eason  
SQL注入是最常見的攻擊方式之一,它不是利用操作系統(tǒng)或其它系統(tǒng)的漏洞來實現(xiàn)攻擊的,而是程序員因為沒有做好判斷,被不法用戶鉆了SQL的空子,下面這篇文章主要給大家介紹了關(guān)于Java中如何避免sql注入的相關(guān)資料,需要的朋友可以參考下

前言

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

造成sql注入的原因:

程序沒有有效過濾用戶的輸入,使攻擊者成功的向服務(wù)器提交惡意的SQL腳本,程序在接收后錯誤的將攻擊者的輸入作為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中--是注釋標記,如果上面這個SQL被執(zhí)行,就可以讓攻擊者在不知道任何用戶名和密碼的情況下成功登錄。所以,防止sql注入至關(guān)重要

預(yù)防sql注入方法:

  • 嚴格限制Web應(yīng)用的數(shù)據(jù)庫的操作權(quán)限,給連接數(shù)據(jù)庫的用戶提供滿足需要的最低權(quán)限,最大限度的減少注入攻擊對數(shù)據(jù)庫的危害
  • 對進入數(shù)據(jù)庫的特殊字符進行轉(zhuǎn)義處理,或編碼轉(zhuǎn)換
  • 校驗參數(shù)的數(shù)據(jù)格式是否合法(可以使用正則或特殊字符的判斷)
  • 預(yù)編譯SQL (Java中使用PreparedStatement),參數(shù)化查詢方式,避免SQL拼接
  • 使用mybatis的"#{}“預(yù)編譯,將傳入的值按照字符串的形式進行處理
  • 發(fā)布前,利用工具進行SQL注入檢測
  • 報錯信息不要包含SQL信息輸出到 Web 頁面

java 有效的防止SQL注入

1.永遠不要信任用戶的輸入。對用戶的輸入進行校驗,可以通過正則表達式,或限制長度;對單引號和雙"-"進行轉(zhuǎn)換等。

2.永遠不要使用動態(tài)拼裝sql,可以使用參數(shù)化的sql或者直接使用存儲過程進行數(shù)據(jù)查詢存取。

3.永遠不要使用管理員權(quán)限的數(shù)據(jù)庫連接,為每個應(yīng)用使用單獨的權(quán)限有限的數(shù)據(jù)庫連接。

4.不要把機密信息直接存放,加密或者hash掉密碼和敏感的信息。

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

總結(jié)

到此這篇關(guān)于Java中如何避免sql注入的文章就介紹到這了,更多相關(guān)Java避免sql注入內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springboot集成測試里的redis

    springboot集成測試里的redis

    這篇文章主要介紹了springboot集成測試里的redis,本文給大家分享了源碼,添加依賴添加mock的方法,需要的朋友可以參考下
    2018-11-11
  • Java設(shè)計模式中的工廠及抽象工廠模式解析

    Java設(shè)計模式中的工廠及抽象工廠模式解析

    這篇文章主要介紹了Java設(shè)計模式中的工廠及抽象工廠模式解析,工廠模式作為創(chuàng)建型設(shè)計模式中常見的設(shè)計方法,一般情況下,工廠模式分為3種,簡單工作、工廠方法、抽象工作,其實簡單工廠只是工廠方法的一種特例,需要的朋友可以參考下
    2023-12-12
  • Java8新特性Stream流中anyMatch和allMatch和noneMatch的區(qū)別解析

    Java8新特性Stream流中anyMatch和allMatch和noneMatch的區(qū)別解析

    這篇文章主要介紹了Java8新特性Stream流中anyMatch和allMatch和noneMatch的區(qū)別解析,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • 關(guān)于如何正確地定義Java內(nèi)部類方法詳解

    關(guān)于如何正確地定義Java內(nèi)部類方法詳解

    在Java中,我們通常是把不同的類創(chuàng)建在不同的包里面,對于同一個包里的類來說,它們都是同一層次的,但其實還有另一種情況,有些類可以被定義在另一個類的內(nèi)部,本文將詳細帶你了解如何正確地定義Java內(nèi)部類,需要的朋友可以參考下
    2023-05-05
  • SpringMVC中ModelAndView用法小結(jié)

    SpringMVC中ModelAndView用法小結(jié)

    本文主要介紹了SpringMVC中ModelAndView用法小結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-12-12
  • 手把手教你SpringBoot輕松整合Minio

    手把手教你SpringBoot輕松整合Minio

    這篇文章主要介紹了手把手教你SpringBoot輕松整合Minio的方法,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下
    2021-01-01
  • FastJson實現(xiàn)駝峰下劃線相互轉(zhuǎn)換方法詳解

    FastJson實現(xiàn)駝峰下劃線相互轉(zhuǎn)換方法詳解

    這篇文章主要介紹了使用FastJson進行駝峰下劃線相互轉(zhuǎn)換寫法及誤區(qū),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-01-01
  • java?CompletableFuture異步任務(wù)編排示例詳解

    java?CompletableFuture異步任務(wù)編排示例詳解

    這篇文章主要為大家介紹了java?CompletableFuture異步任務(wù)編排示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • springboot2.6.3讀取不到nacos上的配置文件問題

    springboot2.6.3讀取不到nacos上的配置文件問題

    這篇文章主要介紹了springboot2.6.3讀取不到nacos上的配置文件問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java8深入學習系列(一)lambda表達式介紹

    Java8深入學習系列(一)lambda表達式介紹

    Java8最值得學習的特性就是Lambda表達式和Stream API,所以我們學習java8的第一課就是學習lambda表達式,下面這篇文章主要給大家介紹了關(guān)于Java8學習之lambda的相關(guān)資料,文中介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08

最新評論