当前位置: 首页 > 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.tj-hxxt.cn/news/26162.html

相关文章:

  • 怎样看网站建设网站排名推广
  • 长春建站北京网络seo
  • 网站建设佛山云南疫情最新情况
  • rt19 wordpress开鲁网站seo转接
  • 微信网站制作免费平台网站点击排名优化
  • 南宁建站模板展示百度上如何做优化网站
  • 网站开发设计进度表今日国际新闻大事件
  • 如何用公司名称搜到公司网站免费找精准客户软件
  • php主机网站火星时代教育培训机构怎么样
  • 做网站需要学些什么软件怎么做互联网推广
  • 网站图片规格刷网站百度关键词软件
  • 建设银行登录用户名是什么搜索优化师
  • 象山网站优化公司windows优化大师的优点
  • C 做的窗体怎么变成网站优化疫情防控 这些措施你应该知道
  • 台州制作网站软件免费网站建设哪家好
  • 苏州木渎做网站看广告赚钱一天50元
  • 校园网站建设策划书网络seo推广培训
  • 网站设计的要求找竞价托管公司
  • 网站建设基本知识代码爱站网seo综合查询工具
  • 青岛的公司网站标题seo外包优化
  • 怎么用腾讯云服务器做网站今日新闻十大头条内容
  • 上海的网站建设公司哪家好无锡百度推广开户
  • 个人网站优秀作品谷歌 chrome 浏览器
  • 个人做民宿需要建立网站吗常德今日头条新闻
  • 商城和营销型网站建设关键词推广优化外包
  • 石家庄房地产网站建设重庆seo团队
  • wordpress 帮助 主题关键词优化举例
  • 网站企业建设优化建议
  • 天津做网站软件百度上打广告怎么收费
  • 做交易平台网站外链link