sql 注入
如何防止sql注入的产生
1 严格检查变量的类型和格式,特别是最终会改变数据库的遍历
2 特殊字符的转义,防止特殊字符最终成为sql的语法一部分,从而改变sql的语法
3 绑定变量,使用sql与便于。 sql 预编译,对于常用的语法模板,可以提供预编译,这样输入的参数无论怎样改变,也不会影响sql执行
mybatis #与$ 的区别
1 #{aaa} 会将输入的变量加上双引号,而${aaa} 则是直接替换
2 #能有很大程度上有效避免sql注入,而$却不行,所以能用#号的地方尽量用#
3 对于像动态表名,列名这种不能用#的地方,需要做好对输入参数的检查过滤。
mybatis是如何防止sql注入的:
mybatis 底层采用预编译方式,对于输入的参数,替换底层的编译好的sql中的占位符,
因为sql注入只对编译过程影响,可以有效避免sql注入。
参考文章