【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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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;编写源代码…