当前位置: 首页 > news >正文

国家林业建设工程协会网站淘宝指数官网的网址

国家林业建设工程协会网站,淘宝指数官网的网址,网站建设店,娱乐企业网站建设文章目录 区别详细讲解${}sql注入案例 区别 #会进行预编译,安全,通过#{}传入的参数 mybatis会认为是一个字符串,自动加上引号“” $ 不会进行预编译,通过$ 传入的参数会直接取出来使用,可能会产生sql注入风险&#xff…

文章目录

    • 区别
    • 详细讲解
    • ${}sql注入案例

区别

#会进行预编译,安全,通过#{}传入的参数 mybatis会认为是一个字符串,自动加上引号“”

$ 不会进行预编译,通过$ 传入的参数会直接取出来使用,可能会产生sql注入风险,只有当传入的是表名时必须用$传入,其他的都建议用#{}传入

详细讲解

MyBatis中使用parameterType向SQL语句传参,parameterType支持的类型可以是基本类型int,String,HashMap和java自定义类型。
在SQL中引用这些参数的时候,可以使用两种方式:

#{parameterName}
${parameterName}

首先,我们说一下这两种引用参数时的区别,使用#{parameterName}引用参数的时候,Mybatis会把这个参数认为是一个字符串,并自动加上引号’ ',例如传入参数是“tom”,那么在下面SQL中:

Select * from user where name = #{name}

使用的时候就会转换为:

Select * from user where name = 'tom'; 

同时使用${parameterName}的时候在下面SQL中

Select * from user where name = ${name}

就会直接转换为:

Select * from user  where name = tom

简单说#{}是经过预编译的,是安全的。
而${}是未经过预编译的,仅仅是取变量的值,是非安全的,存在SQL注入。

#{} 这种取值是编译好SQL语句再取值
${} 这种是取值以后再去编译SQL语句

${}sql注入案例

以下用一个示例来看一下$传参sql注入的问题

UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.springboot.store.mapper.UserMapper"><select id="selectByUsername">select *  from t_user where username = ${username}</select>
</mapper>

在单元测试中传入参数如下:

@Test
public void reg1(){userService.selectByUsername("tom or phone = 123");}

日志打印sql如下:

select * from t_user where username = tom or phone = 123

可以看到,我们只是想通过username字段查询,但是条件里面却被拼接了phone字段的条件。

接着我们把UserMapper.xml中的$替换为#
UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.springboot.store.mapper.UserMapper"><select id="selectByUsername">select *  from t_user where username = ${username}</select>
</mapper>

日志打印sql如下:

select * from t_user where username = 'tom or phone = 123'

此时只会根据username条件进行查询。

http://www.dinnco.com/news/56366.html

相关文章:

  • 网站建设服务的风险海口网站排名提升
  • 比较有逼格的网站今日头条极速版最新
  • 中英网站开发谷歌play商店官网
  • 用六类网站做电话可以吗站长工具在线平台
  • 公司部门工作总结武汉网站seo公司
  • 真么做网站网站制作的费用
  • php做的网站如何发布搜索关键词查询
  • 做网站怎么赚钱广告seo排名优化工具
  • 桂林象鼻山附近酒店推荐举例说明seo
  • 贵州微信网站建设百度全网营销
  • web网站开发实战视频女生seo专员很难吗为什么
  • 用tp框架怎么做网站比较好的友链平台
  • 网站模板建设搜索引擎优化的例子
  • 成都山而网站建设公司指数型基金是什么意思
  • 《小城镇建设》》杂志社网站网站首页制作网站
  • 关于棋牌游戏网站建设文案广西seo经理
  • 青海学会网站建设公司重庆网站搜索排名
  • 做网站的市场风险分析及对策天津百度推广公司地址
  • 手机网站自适应屏幕网站宣传文案范例
  • 上海最新动态搜索引擎优化到底是优化什么
  • 大学路网站建设app推广接单平台
  • 武汉app网站建设外贸企业网站推广
  • 织梦网站熊掌号改造怎么做百度手机怎么刷排名多少钱
  • 海外购物网站上填手机号码怎么做百度导航下载2022最新版
  • wordpress封面外链新乡seo外包
  • DW做的网页用网站打不开宣传软文是什么
  • 网站的国际化 怎么做推广公众号的9种方法
  • 网站观赏北京seo网站优化培训
  • 网站界面用什么做的企业网站模板源码
  • 论坛网站开发平台培训机构不退费最有效方式