国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【MyBatis】防止sql注入

這篇具有很好參考價(jià)值的文章主要介紹了【MyBatis】防止sql注入。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

關(guān)于sql注入的解釋這里不再贅述。

在MyBatis中防止的sql注入主要分為兩種:

????????第一種就是MyBatis提供了兩種支持動(dòng)態(tài) sql 的語法 #{}?和 ${},其中${} 是簡(jiǎn)單的字符串替換,而 #{}?在預(yù)處理時(shí),會(huì)把參數(shù)部分用一個(gè)占位符 ? 代替,可以有效的防止sql的注入,面試的時(shí)候經(jīng)常會(huì)問到,這里也不再詳細(xì)贅述;

? ? ? ? 第二種是排序防止sql注入,實(shí)現(xiàn)方案如下

SQL注入過濾器

以下是sql注入過濾器,當(dāng)判斷出是非法字符時(shí)則拋出到自定義的異常類BusinessException中

BusinessException異常類的創(chuàng)建與使用

public class SQLFilter {

    /**
     * SQL注入過濾
     *
     * @param sql 待驗(yàn)證字符串
     */
    public static String filterInject(String sql) {
        if (StringUtils.isBlank(sql)) {
            return null;
        }
        //去掉'|"|;|\字符
        sql = sql.replace("'", "")
                .replace("\"", "")
                .replace(";", "")
                .replace("\\", "")
                .toLowerCase();
        //非法字符
        final String[] keywords = {"master", "truncate", "insert", "select", "delete", "update", "declare", "alert", "drop"};

        //判斷是否包含非法字符
        for (String keyword : keywords) {
            if (sql.indexOf(keyword) > 0) {
                throw new BusinessException("SQL包含非法字符");
            }
        }
        return sql;
    }
}

分頁工具類

這里我們使用的是PageHelper組件實(shí)現(xiàn)分頁,需要在pom中引用jar包【com.github.pagehelper】

public class PageUtils {

    public static void initPaging(Map<String, Object> params) {
        //分頁參數(shù)
        Object pageNumObj = params.get("page");
        Object pageSizeObj = params.get("limit");
        Object sortNameObj = params.get("sortName");
        Object sortOrderObj = params.get("sortOrder");
        //默認(rèn)分頁數(shù)為1
        int pageNum = pageNumObj != null ? Integer.parseInt(pageNumObj.toString()) : 1;
        //默認(rèn)每頁大小為10
        int pageSize = pageSizeObj != null ? Integer.parseInt(pageSizeObj.toString()) : 10;
        String orderBy = "";
        if (sortNameObj != null && sortOrderObj != null) {
            orderBy = sortNameObj.toString() + " " + sortOrderObj.toString();
        }
        PageHelper.startPage(pageNum, pageSize, SQLFilter.filterInject(orderBy));
    }

    public static Map<String, Object> filterParams(Map<String, Object> params) {
        Object sortNameObj = params.get("sortName");
        Object sortOrderObj = params.get("sortOrder");
        String orderBy = "";
        if (sortNameObj != null && sortOrderObj != null) {
            orderBy = sortNameObj.toString() + " " + sortOrderObj.toString();
        }
        params.put("orderBy",SQLFilter.filterInject(orderBy));
        return params;
    }


}

分頁公共參數(shù)實(shí)體

@Data
public abstract class Query {

    // 初始分頁頁碼
    private Integer page = 1;

    // 初始分頁條數(shù)
    private Integer limit = 10;

    // 初始排序字段; sortName = "id"
    private String sortName;

    // 初始排序方式; sortOrder = "asc"
    private String sortOrder;
}

實(shí)現(xiàn)分頁

實(shí)現(xiàn)方法中,【SysUserQuery?】中是我的業(yè)務(wù)邏輯中的查詢參數(shù),但是繼承了分頁公共參數(shù)實(shí)體,這里就不列出來了;

分頁工具類中的方法由Map接收,由于我這里傳的是實(shí)體,所以多出來一步實(shí)體轉(zhuǎn)成Map操作;

    @Override
    public Result queryPage(SysUserQuery sysUserQuery) {
        Map<String, Object> params = JSON.parseObject(JSON.toJSONString(sysUserQuery), Map.class);
        // 分頁
        PageUtils.initPaging(params);
        // 查詢數(shù)據(jù)
        List<SysUserVo> list = sysUserMapper.selectListByQuery(sysUserQuery);
        PageInfo page = new PageInfo(list);
        return new Result(page);
    }

至此結(jié)束。文章來源地址http://www.zghlxwxcb.cn/news/detail-642385.html

到了這里,關(guān)于【MyBatis】防止sql注入的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【網(wǎng)絡(luò)安全】SQL注入詳解

    【網(wǎng)絡(luò)安全】SQL注入詳解

    SQL注入是比較常見的網(wǎng)絡(luò)攻擊方式之一,它不是利用操作系統(tǒng)的BUG來實(shí)現(xiàn)攻擊,而是針對(duì)程序員編寫時(shí)的疏忽,通過SQL語句,實(shí)現(xiàn)無賬號(hào)登錄,甚至篡改數(shù)據(jù)庫。 1:尋找到SQL注入的位置 2:判斷服務(wù)器類型和后臺(tái)數(shù)據(jù)庫類型 3:針對(duì)不同的服務(wù)器和數(shù)據(jù)庫特點(diǎn)進(jìn)行SQL注入攻擊

    2024年02月06日
    瀏覽(23)
  • 網(wǎng)絡(luò)安全必學(xué)SQL注入

    網(wǎng)絡(luò)安全必學(xué)SQL注入

    SQL注入漏洞可以說是在企業(yè)運(yùn)營(yíng)中會(huì)遇到的最具破壞性的漏洞之一,它也是目前被利用得最多的漏洞。要學(xué)會(huì)如何防御SQL注入,首先我們要學(xué)習(xí)它的原理。 針對(duì)SQL注入的攻擊行為可描述為通過在用戶可控參數(shù)中注入SQL語法,破壞原有SQL結(jié)構(gòu),達(dá)到編寫程序時(shí)意料之外結(jié)果的攻

    2024年02月03日
    瀏覽(26)
  • 【網(wǎng)絡(luò)安全】初探SQL注入漏洞

    【網(wǎng)絡(luò)安全】初探SQL注入漏洞

    要想玩SQL注入,一個(gè)簡(jiǎn)單的數(shù)據(jù)交互頁面是需要的,故我們用PHP做一個(gè)簡(jiǎn)易網(wǎng)頁,有登錄、注冊(cè)和首頁三塊內(nèi)容。 登錄需要輸入賬號(hào)密碼,等待提交后進(jìn)入系統(tǒng); 注冊(cè)需要輸入名字,密碼,手機(jī)號(hào),照片,等待提交后進(jìn)入系統(tǒng); 首頁需要利用PHP和數(shù)據(jù)庫聯(lián)動(dòng)后的查詢語句,

    2024年02月16日
    瀏覽(24)
  • 網(wǎng)絡(luò)安全-初學(xué)SQL注入&基本概念

    SQL語句:解釋SQL(Structured Query Language)是一種用于與關(guān)系型數(shù)據(jù)庫進(jìn)行交互的語言。SQL語句用于執(zhí)行各種數(shù)據(jù)庫操作,例如插入、更新、刪除和查詢數(shù)據(jù)。 用戶輸入與SQL查詢的拼接:說明應(yīng)用程序通常會(huì)接受用戶的輸入,并將其用作構(gòu)建SQL查詢語句的一部分。這種拼接用戶

    2024年02月13日
    瀏覽(27)
  • 「網(wǎng)絡(luò)安全」SQL注入攻擊的真相

    「網(wǎng)絡(luò)安全」SQL注入攻擊的真相

    點(diǎn)擊此處即可獲得282G網(wǎng)絡(luò)安全學(xué)習(xí)資料 我們生活在數(shù)據(jù)的黃金時(shí)代。有些公司將其分析為更好的自己,有些公司為了獲利而進(jìn)行交易,沒有一家公司因其價(jià)值而自由放棄 - 對(duì)于他們的業(yè)務(wù)和犯罪分子。 SQL(結(jié)構(gòu)化查詢語言)是一種非常流行的與數(shù)據(jù)庫通信的方式。雖然許多

    2024年02月07日
    瀏覽(25)
  • 網(wǎng)絡(luò)安全之SQL注入及防御(下篇)

    網(wǎng)絡(luò)安全之SQL注入及防御(下篇)

    目錄 什么是SQL注入? 一,SQL注入會(huì)導(dǎo)致什么呢? 二,SQL注入思想與步驟 三,SQL注入的繞過 四,sqlmap工具的使用 ?五,sql注入的防御方法 總結(jié) 什么是SQL注入? SQL注入(SQL Injection)是一種常見的網(wǎng)絡(luò)攻擊手段,是因?yàn)閼?yīng)用程序?qū)τ脩糨斎氲臄?shù)據(jù)驗(yàn)證不到位造成的。攻擊者在

    2024年04月28日
    瀏覽(28)
  • 【網(wǎng)絡(luò)安全】SQL注入漏洞的修復(fù)建議

    【網(wǎng)絡(luò)安全】SQL注入漏洞的修復(fù)建議

    SQL注入是Web應(yīng)用程序常見的安全漏洞之一,攻擊者通過惡意構(gòu)造的SQL查詢語句,成功在應(yīng)用程序的數(shù)據(jù)庫中執(zhí)行任意操作,導(dǎo)致數(shù)據(jù)泄露、篡改或其他安全問題。 本篇技術(shù)博客將詳細(xì)介紹SQL注入漏洞的修復(fù)建議,包括過濾危險(xiǎn)字符和使用預(yù)編譯語句,通過具體的代碼案例幫助

    2024年02月06日
    瀏覽(26)
  • 網(wǎng)絡(luò)安全B模塊(筆記詳解)- SQL注入

    網(wǎng)絡(luò)安全B模塊(筆記詳解)- SQL注入

    1.使用滲透機(jī)場(chǎng)景kali中工具掃描服務(wù)器場(chǎng)景,將apache的端口號(hào)和版本號(hào)作為Flag提交(格式:端口號(hào)_版本號(hào)) ?Flag:8081_7.5 2.使用滲透機(jī)場(chǎng)景windows7訪問服務(wù)器場(chǎng)景SQL網(wǎng)站,并將網(wǎng)站中概述頁面中的Flag提交; Flag:sql_is_good 3.使用滲透機(jī)場(chǎng)景windows7訪問服務(wù)器中的SQL網(wǎng)站中的數(shù)

    2024年01月20日
    瀏覽(48)
  • 網(wǎng)絡(luò)安全進(jìn)階學(xué)習(xí)第九課——SQL注入介紹

    網(wǎng)絡(luò)安全進(jìn)階學(xué)習(xí)第九課——SQL注入介紹

    將 不受信任 的數(shù)據(jù)作為命令或查詢的一部分發(fā)送到解析器時(shí),會(huì)產(chǎn)生諸如SQL注入、NoSQL注入、OS 注入和LDAP注入的注入缺陷。攻擊者的惡意數(shù)據(jù)可以誘使解析器在 沒有適當(dāng)授權(quán) 的情況下執(zhí)行非預(yù)期命令或訪問數(shù)據(jù)。 注入能導(dǎo)致 數(shù)據(jù)丟失、破壞 或 泄露給無授權(quán)方 ,缺乏可審

    2024年02月14日
    瀏覽(28)
  • SQL注入 ? ~~~ 網(wǎng)絡(luò)空間安全及計(jì)算機(jī)領(lǐng)域常見英語單詞及短語——網(wǎng)絡(luò)安全(二)

    就比如登錄頁面,輸入用戶名admin和密碼123456,網(wǎng)頁告訴服務(wù)器我的用戶名和密碼,服務(wù)器就會(huì)去問數(shù)據(jù)庫,有沒有這個(gè)用戶名admin并且密碼為123456的用戶,服務(wù)器收到數(shù)據(jù)庫的回答就回去告訴網(wǎng)頁,有這個(gè)用戶就登錄成功,沒有就登錄失敗。SQL注入就是在網(wǎng)頁告訴服務(wù)器我的

    2024年02月13日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包