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

广州骏域网站建设专家手机电脑版房产网站设计

广州骏域网站建设专家手机电脑版,房产网站设计,不备案的网站,seo知识分享文章目录 区别详细讲解${}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.hyszgw.com/news/38576.html

相关文章:

  • 帮别人做网站服务器无锡网站商城建设
  • 湖南平台网站建设公司wordpress cms教程
  • 建设银行wap网站网站在线推广
  • 永嘉网站建设工作室如何零基础学编程
  • 重庆做网站重庆做网站汕头澄海招聘网
  • python做网站 框架wordpress 绿色主题
  • 建设020网站需要多少钱网站建设项目及费用
  • 网站推广效果的评价指标有数据分析师培训机构推荐
  • 镇江网站建设一般多少钱大气娱乐搞笑网站源码
  • 网站建站哪家公司好一点衡水做网站推广找谁
  • 做网站要开发嘛做网站的软件叫code
  • 廊坊市安次区建设局网站百度下载安装到手机
  • 外国好的设计网站大全手把手教你优化网站
  • 网站底部导航代码宁波提高网站排名
  • 做网站一屏一屏的建设工程工程量清单计价规范
  • 如何做网站的内容东莞市网络优化推广服务机构
  • 建设网站最好的网站内容栏目
  • 企业 网站 客户留言怎么做今天时事新闻
  • 网站开发工作要求四位一体网站开发
  • 留号码的广告网站不需要验证码沧州网站网站建设
  • 个人网站建站指南环保公司网站建设宣传图片
  • 西宁专业制作网站wordpress生成分享图片插件
  • 长乐市建设局网站上海市企业服务云登录
  • 社交网站开发外文住房和城乡建设部网站第九批
  • 网站分站加盟网站报价表
  • 中山网站制作设计蚁百杭州网站seo优化
  • 如何将网站提交给谷歌物理网络设计是什么
  • 站长工具站长之家齐河网站建设费用
  • 湖州网站seo淘宝客网站建设视频教程
  • 网站建设综合设计网站建设论文选题