您现在的位置是:主页 > news > 重庆网站建设选夹夹虫/贵阳百度推广电话
重庆网站建设选夹夹虫/贵阳百度推广电话
admin2025/5/19 21:06:33【news】
简介重庆网站建设选夹夹虫,贵阳百度推广电话,有关网络技术的网站,哈尔滨的网站建设公司哪家好其实这个mybatis的${}和#{}区别和使用,算是很古早很常见的一个基础问题了? 先说结论:尽可能使用#,不使用$,因为#可以防止SQL注入。 如果记不清楚,就记一句话或者是口诀:不是所有事都能靠钱能解…
重庆网站建设选夹夹虫,贵阳百度推广电话,有关网络技术的网站,哈尔滨的网站建设公司哪家好其实这个mybatis的${}和#{}区别和使用,算是很古早很常见的一个基础问题了?
先说结论:尽可能使用#,不使用$,因为#可以防止SQL注入。 如果记不清楚,就记一句话或者是口诀:不是所有事都能靠钱能解…
其实这个mybatis的${}和#{}区别和使用,算是很古早很常见的一个基础问题了?
先说结论:尽可能使用#,不使用$,因为#可以防止SQL注入。
如果记不清楚,就记一句话或者是口诀:不是所有事都能靠钱能解决($号是货币符号)
为什么#可以防止SQL注入?
#{} 占位符,${} 拼接符
#占位符对应的SQL是占位作用的,也就是形成的SQL对应的位置会用引号括起来,对于SQL来说就是一个参数而已。
$它是拼接符号,不是引号括起来的,它对应一串字符是可以与SQL拼在一起的,相当于成为SQL的一部分,这就很危险了,你拼接的东西可以破坏原有的SQL执行逻辑。
比如说你有一个根据id查询信息的SQL,这时候有个坏人想查看你全部的信息,他会怎么做?
他肯定不会去找id一个去一个的试,最简单的方式是SQL注入写一串有问题的参数传过去。
他写了一个
select * from user where id = 3 or 1 = 1
如果是#号,对他来说这就是传了一个奇怪参数的SQL执行,不会有结果返回select * from user where "id = 3 or 1 = 1";但如果是$他会拼接到SQL里面,变成不管有没有id等于3的人,最后我都会执行查看所有信息的SQLselect * from user where id = 3 or 1 = 1
关于#{}和${} 的建议:
建议就是能用#就用#,看某些文章说order by传递参数可能要用$算是一种特殊情况外,基本都可以用#来代替。
一般来说$通常我们写linux脚本传递参数的时候会用到,这个一定不能是用户来接触使用的,我们内部写定好的参数,比如说数据库,表名什么的可以,外界客户传递参数查询的不要使用$.