【SpringBoot】持久層 sql 注入問題

目錄

概述

#{} 與 ${}


概述

? ? ? ? 前端惡意傳參,改變后端 sql 語句的語法結構,從而使后端給前端返回一些私密的數據。這種安全問題往往是因為沒有嚴格過濾參數,或者后端代碼不嚴謹導致的。

#{} 與 ${}

? ? ? ? 在 MyBatis 框架中,#{} 與 ${} 都表示占位符,方便靈活傳參。如下代碼

@Select("select * from user_info where username= #{name} ")
UserInfo queryByName(String name);

????????#{} 使用的是 預編譯 sql , ${} 使用的是 及時 sql

????????及時 sql :sql 語句要先經過 詞法分析,語法分析,語義分析,再把優化后的 sql 喂給數據庫執行。

? ? ? ? 也就是說,${} 占位符傳過來的參數是要參與 sql 語法構建的,如果參數中帶有一些 sql 的關鍵字,會在詞法分析時被識別成 sql 的關鍵字。

? ? ? ? 預編譯 sql : 會把編譯好的 sql 緩存起來,當要使用該 sql 時,不會再進行?詞法分析,語法分析,語義分析。

? ? ? ? 如此一來,不僅提高了 sql 的執行效率,#{} 傳過來的參數不會參與 sql 的語法構建。

????????#{} 占位符會會根據類型,自動拼接 ' ' ,${} 會對參數直接進行替換,如果參數為字符串,需要加? ?' ' 號。如下代碼

@Select("select * from user_info whereusername= '${name}' ")
UserInfo queryByName(String name);

? ? ? ? 因為 #{} 占位符會拼接 '' 號,在一些 sql 中,并不需要加單引號,就必須使用 ${} 占位符。如下示例

@Select("select * from user_info order by id ${sort}")
public List<UserInfo> selectUserSortById(String sort);

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/92999.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/92999.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/92999.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

怎么寫好漢語言文學專業的論文?

磨刀不誤砍柴功&#xff0c; 前期多看文章和文獻&#xff0c;吸取寫作經驗&#xff0c;寫作過程會更加順利噢&#xff01;看到最后&#xff0c;相信你能得到收獲&#xff01; 寫漢語言專業論文并不難&#xff0c;從選題、資料準備、框架搭建、正文寫作、修改定稿五個核心環節展…

MySQL User表入門教程

一、User表概述 MySQL的user表位于mysql系統數據庫中&#xff0c;是MySQL權限系統的核心&#xff0c;用于存儲用戶賬戶信息、認證方式和全局權限。通過操作此表&#xff0c;可實現用戶創建、權限分配及安全審計。 二、User表核心字段解析字段名作用示例值Host用戶允許連接的主機…

[NPUCTF2020]這是什么覓

題目是一個文件&#xff0c;我們先以記事本打開一下&#xff0c;開頭就是PK&#xff0c;基本可以確定這是一個 ZIP 格式的壓縮包?&#xff0c;不確定可以用winhex打開&#xff1a;?50 4B 03 04開頭則 100% 是 ZIP 文件。改一下后綴之后解壓得到一張圖片上面是日期&#xff0c…

每日任務day0812:小小勇者成長記之擠牛奶

清晨&#xff0c;薄霧還繚繞在草地上&#xff0c;小小勇者背著編織籃子來到農場。奶牛們低頭咀嚼&#xff0c;尾巴輕輕拍打著蒼白的露珠。老人微笑著遞給他一只溫熱的牛奶罐&#xff0c;說&#xff1a;“第一次要慢&#xff0c;別驚擾它們。”勇者學著老人彎下身&#xff0c;溫…

IIS 多用戶環境中判斷服務器是否為開發用電腦,數據狀態比較

如果只需要在 IIS 多用戶環境中判斷服務器是否為開發用電腦&#xff08;一個固定狀態&#xff0c;通常不會動態切換&#xff09;&#xff0c;代碼可以進一步簡化。這種場景下&#xff0c;狀態一般是啟動時確定的&#xff08;如通過配置文件或環境變量&#xff09;&#xff0c;后…

P2865 [USACO06NOV] Roadblocks G

思路&#xff1a;嚴格次短路&#xff0c;在任何情況下如果發現一條從1到i的路&#xff0c;都有以下情況&#xff1a;1.該路徑小于當前1到i的最短路&#xff0c;將最短路替換2.該路徑長度等于當前最短路&#xff0c;舍去3.該路徑大于最短路且小于次短路&#xff0c;將此路徑替換…

基于Hadoop的汽車價格預測分析及評論情感分析可視化系統

文章目錄有需要本項目的代碼或文檔以及全部資源&#xff0c;或者部署調試可以私信博主一、項目背景二、項目目標三、系統架構四、功能模塊五、創新點六、應用價值與前景每文一語有需要本項目的代碼或文檔以及全部資源&#xff0c;或者部署調試可以私信博主 一、項目背景 近年…

gpt-5與gpt-5-fast

簡單來說&#xff1a; GPT-5 → 追求最高質量的推理&#xff0c;輸出會更細致、更準確&#xff0c;尤其適合需要深度思考、長鏈推理、嚴謹分析的任務&#xff08;比如復雜代碼調試、長文檔推理、系統設計&#xff09;。速度相對慢一些。GPT-5-fast → 追求更高的響應速度&#…

Mybatis源碼解讀-SqlSession 會話源碼和Executor SQL操作執行器源碼

相關流程圖整理元數據簡略圖執行流程圖一級緩存、二級緩存設計與查詢流程分析圖一級緩存設計-類圖一級緩存工作流程圖二級緩存設計-類圖二級緩存工作流程圖元數據簡略圖 執行流程圖 一級緩存、二級緩存設計與查詢流程分析圖 一級緩存設計-類圖 一級緩存工作流程圖 二級緩存設計…

使用Excel制作甘特圖

最終效果&#xff1a;專業的項目管理團隊通常會使用project制作甘特圖&#xff0c;但是很多人沒接觸過這個軟件&#xff0c;另外project制作的甘特圖并不適合放在PPT中展示。由于Excel圖表的數據標簽無法準確識別月初和月末&#xff0c;如果使用原始數據直接做的效果是這樣的&a…

超詳細基于stm32hal庫的esp8266WiFi模塊驅動程序(可直接移植)

目錄 前言&#xff1a; 1 前期準備 1.1 了解mqtt通信協議 1.1.1核心組件 1.2 ESP8266固件燒錄 1.3 啟動EMQX服務器 1.3.1大概了解emqx的使用 2 驅動代碼講解應用 2.1 硬件接線 2.2 AT指令 2.3 驅動代碼 2.4 效果展示 前言&#xff1a; esp8266支持mqtt通信協議&…

redis認識緩存擊穿

緩存擊穿是指 一個非常熱點的數據&#xff08;被高并發訪問&#xff09;在緩存中過期失效的瞬間&#xff0c;導致大量并發請求同時穿透緩存&#xff0c;直接落到底層數據庫&#xff0c;造成數據庫瞬間壓力劇增甚至崩潰的現象。關鍵特征和你的描述解析“數據庫沒有就需要命中的數…

TF-IDF——紅樓夢案例

目錄 用 TF-IDF 挖掘《紅樓夢》各回目核心關鍵詞&#xff1a;一個 NLP 實踐案例 一、案例背景與目標 二、實現步驟 步驟 1&#xff1a;數據準備與分卷處理 1. 導入模塊與創建目錄 2. 打開源文件并初始化變量 3. 逐行處理文本內容 4. 寫入卷內容并過濾前兩行 5. 關閉最后…

【軟考中級網絡工程師】知識點之 IP QoS 技術

目錄一、IP QoS 技術是什么1.1 定義與概念1.2 重要性和應用場景二、IP QoS 技術原理2.1 流量分類與標記2.2 流量整形與限速2.3 擁塞避免與管理2.4 資源預留協議&#xff08;RSVP&#xff09;三、IP QoS技術模型3.1 盡力而為服務模型3.2 綜合服務模型&#xff08;IntServ&#x…

Git 常用命令速查表

一、倉庫初始化與克隆命令說明git init在當前目錄初始化本地倉庫git clone <遠程倉庫地址>克隆遠程倉庫到本地&#xff08;例&#xff1a;git clone https://github.com/user/repo.git&#xff09;二、文件狀態與提交命令說明git status查看工作區 / 暫存區文件狀態git a…

第五十四章:AI模型的“壓縮大師”:GPTQ、AWQ與bitsandbytes實戰量化

AI模型壓縮前言&#xff1a;讓訓練好的AI模型“輕裝上陣”第一章&#xff1a;回顧與挑戰&#xff1a;訓練后量化&#xff08;PTQ&#xff09;的必要性1.1 量化原理與精度類型回顧&#xff1a;FP32到INT4/INT81.2 PTQ&#xff08;Post-Training Quantization&#xff09;&#x…

在Word和WPS文字一頁中實現一欄與多欄混排

在Word和WPS文字的一頁中如何實現分欄和不分欄的內容混排&#xff1f;只需要使用分欄功能。把光標放在要分欄的位置&#xff0c;插入分欄即可&#xff0c;最關鍵的點是分欄應用于“插入點之后”。如果不需要分欄&#xff0c;則欄數選擇為1即可。一、Word和WPS文字的分欄設置路徑…

Python調用C/C++函數庫的多種方法與實踐指南

Python作為一門高級編程語言&#xff0c;以其簡潔的語法和豐富的庫生態贏得了開發者的青睞。然而&#xff0c;在計算密集型任務中&#xff0c;Python的性能往往無法滿足要求。Python調用C/C函數庫成為提升應用性能的關鍵技術路徑&#xff0c;通過將底層計算邏輯用C/C實現&#…

【21】OpenCV C++實戰篇——OpenCV C++案例實戰二十七《角度測量》

OpenCV C案例實戰二十七《角度測量》 利用opencv獲取三點所形成直線的角度

程序在計算機中的運行方式

程序在計算機中的運行是一個涉及硬件、操作系統和軟件協同工作的復雜過程。我們可以將其分解為幾個關鍵階段來理解&#xff1a;1. 程序的誕生&#xff1a;從源代碼到可執行文件 編寫代碼&#xff1a;程序員使用高級編程語言&#xff08;如C、Python、Java&#xff09;編寫源代碼…