博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mybatis的sql映射语句写法
阅读量:2491 次
发布时间:2019-05-11

本文共 1694 字,大约阅读时间需要 5 分钟。

mybatis模糊查询 Like

Mybatis模糊查询like语句有几种拼写方式:  

    1.使用#{} 。  因为#{ }解析成sql语句时候,把变量默认为字符串,会在变量外侧自动加单引号'  ',所以这里 % 需要使用双引号"  ",不能使用单引号 '  ',不然会查不到任何结果

and a.product like "%"#{product,jdbcType=VARCHAR}"%"

  即sql为:and a.product like ‘%美汁%’

     2.使用${ } 。 直接将参数显示注入到sql中,弊端:可能引起sql注入问题。不建议使用。

and a.product like '%${product}%'

即:传入变量“美汁”时,对应的sql为:and a.product like ‘%美汁%’

当传入的变量为“美汁%’ or 1=1 or a.product like ‘%你好 ”,sql会直接注入从参数,显示为:

        and a.product like ‘美汁%’ or 1=1 or a.product like ‘%你好’ 

此时,sql语句的意思已经发生变化,这种现象叫做sql注入问题,所以一般不建议使用${}

       3.使用concat(a,b,c) 。使用函数连接sql语句。        

and a.product like CONCAT('%',#{product,jdbcType=VARCHAR},'%')

SQL注入问题

什么是sql注入

       所谓sql注入就是web后台应用程序存在安全漏洞,在输入的字符串中嵌入sql指令,缺乏字符检查的程序将这些字符串误认为是正常的sql指令,利用这些sql指令执行数据库操作,可能严重破坏数据库。

举个例子

        mybatis中使用${}时,会直接注入显示变量,容易出现sql注入问题,使用#{},则将变量作为字符串处理,会自动为变量添加双引号,不易出现sql注入,较为安全。

        有的应用程序喜欢直接抛异常,web页面上显示sql语句错误详情,这都很容易让人猜到背后执行的sql语句。比如这样的一句错误:“Syntax error (missing operator) in query expression 'username = 'admin'' AND password = 'admin'''.”

        很容易猜到:这是一个登陆账号的sql查询语句:select * from  user  where username=? and password=?

        如果后台使用${}来接受sql变量:当页面账号和密码都输入“admin' or '1”时:对应的sql则变成:

        select * from [users] where username=’admin’ or ‘1’ and password=’admin’ or ‘1’ 

        这句sql就变成永远成立,可以查出来账号密码信息。

         这就是一个典型的sql注入问题。

如何防备Sql注入

       输入验证:检查输入变量内容的合法性。

       错误信息处理:包装内部异常信息和错误信息,不要直接显示给别人看,错误信息显示在日志中自己看就可以了。

       数据加密:利用不常用的加密算法或盐值对数据加密。

       使用存储过程执行查询

 

转载地址:http://yblrb.baihongyu.com/

你可能感兴趣的文章
vnpy学习10_常见坑02
查看>>
用时三个月,终于把所有的Python库全部整理了!拿去别客气!
查看>>
pd.stats.ols.MovingOLS以及替代
查看>>
vnpy学习11_增加测试评估指标
查看>>
资金流入流出计算方法
查看>>
海龟交易法则07_如何衡量风险
查看>>
海龟交易法则08_风险与资金管理
查看>>
海龟交易法则09_海龟式积木
查看>>
海龟交易法则10_通用积木
查看>>
海龟交易法则14_掌控心魔
查看>>
海龟交易法则16_附原版海龟交易法则
查看>>
克罗谈投资策略01_期货交易中的墨菲法则
查看>>
克罗谈投资策略02_赢家和输家
查看>>
克罗谈投资策略03_你所期望的赌博方式
查看>>
克罗谈投资策略04_感觉与现实
查看>>
通向财务自由之路01_导读
查看>>
通向财务自由之路02_成功的决定因素:你
查看>>
中低频量化交易策略研发01_引言
查看>>
中低频量化交易策略研发06_推进的择时策略
查看>>
史丹·温斯坦称傲牛熊市的秘密
查看>>