本篇博客的内容不多,就一条:大部分情况下,使用#{}预编译的手段,而不是用${}原文传值。
目录
3.So,#{}预编译这种方式这么给力,为什么还需要${}原文传值这种方式嘞?
0.SQL注入攻击简介 & #{}和${}简介
具体可参考:JDBC入门六:SQL注入攻击:什么是SQL注入攻击?;Java中引号嵌套的分析;
在实际应用中,在前台用户输入的时候,输入内容带有很大的随意性,其输入内容可能不当;然后,在后台输入项并没有对单引号等特殊字符进行转义等操作;因此,在前端页面上输入的包含单引号等特殊字符的字符串,作为SQL的一部分被带入到了SQL语句中被执行,就可能会造成数据泄露。
JDBC中采用JDBC入门七:SQL注入攻击:SQL注入攻击的解决策略:PreparedStatement预编译SQL;来解决SQL注入攻击问题。
但是,在mybatis中并不需要手动开发,mybatis已经帮我们封装好了: