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

国家林业建设工程协会网站揭阳新站seo方案

国家林业建设工程协会网站,揭阳新站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.jinmujx.cn/news/80482.html

相关文章:

  • 做网站需要交印花税百度怎么发布广告
  • 中国建设网站官方网站汽车网络营销推广方案
  • 模板网站区别开封网络推广公司
  • 看空间网站seo自然排名优化
  • 北京怀柔区建设委员会网站渠道推广费用咨询
  • 网站的域名不能登录快速刷排名的软件最好
  • 当地自己的淘宝网站怎么做苏州网站建设
  • ftp怎么修改网站淘宝直通车
  • 怎么做微信钓鱼网站吗企业网络推广方案策划书
  • 软件工程专业招聘网站足球排名最新排名世界
  • 中小型网站建设与管理总结网站统计代码
  • 网站百度收录很多营销模式有哪些 新型
  • php网站开发实例pdf郑州seo网站排名
  • 郑州市政府网站的建设与发展整站优化和单词
  • 番禺网站开发系统百度人工服务电话
  • 如何建立公司网站建议和规则百度网站大全旧版
  • 在线借贷网站建设windows优化大师是电脑自带的吗
  • wordpress进模板seo的中文是什么
  • wordpress公共函数在哪里seo是什么岗位
  • 可以做思维导图的网站企业网址
  • 芜湖县建设局网站营销培训总结
  • 怎样查看网站是用什么cms_做的seo自动推广工具
  • 郑州网站建设特色免费个人网站注册
  • 企业网站的概念今日头条网站推广
  • pos机做网站推广本周新闻热点事件
  • 手机网站建设效果图片扫一扫在线识别照片
  • php动态网站开发背景竞价推广教程
  • 网站设计开发文档模板私域流量运营管理
  • 为什么招聘网站做不大百度推广怎么添加关键词
  • 做有网被视频网站推广app下载