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

合肥网站建设=388元开发网站

合肥网站建设=388元,开发网站,做网站用香港哪个机房,网站建设与管理用什么软件文章目录 区别详细讲解${}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/42138.html

相关文章:

  • 夺宝网站建设全网
  • 电商网站建设公司网站推广具体内容
  • 怎么知道网站关键词的搜索来源注册域名要钱吗
  • 软件dw做网站市场监督管理局电话
  • 网站自己推广怎么做抖音营销推广方案
  • 郑州网站建设找三牛网络营销有哪些形式
  • WordPress标签加HTML关键词整站优化
  • 做私人网站 违法游戏推广员是违法的吗
  • 龙岗网站开发公司湖南网络推广服务
  • 哪家公司做网站专业免费的网站平台
  • 广州做网站哪个公司做得好海外推广运营
  • 湖南长沙装修公司搜索引擎优化工具有哪些
  • 江苏企业网站建设价格山东搜索引擎优化
  • 删格化网站设计重庆森林经典台词图片
  • 网站制作 招聘网络营销活动策划方案模板
  • 网站建设公司上海做网站公司哪家好海南百度推广总代理
  • 新手建立企业网站流程百度网站登录入口
  • 网站优化要做哪些自己怎么制作网站
  • 网站开发程序网搜网
  • 制作网站第一步爱站网关键词挖掘工具站长工具
  • 校园门户网站开发甲方合同付费推广外包
  • 直接用apk 做登陆网站保定seo推广
  • 丰台网站开发最好的seo外包
  • seo是什么意思广东话北京网站sem、seo
  • 医疗网站建设基本流程淘宝推广运营
  • wordpress怎么搜站点杭州网站外包
  • 网站建设视频讲解梁水才seo优化专家
  • 哪些人可以做网站百度订单售后电话
  • 长春微网站seo网站优化优化排名
  • 蛋糕教做网站360地图下载最新版