mybatis中的#和$的区别
来源:互联网 发布:java用ftp上传文件 编辑:程序博客网 时间:2024/06/08 18:57
#相当于对数据 加上 双引号,$相当于直接显示数据
MyBatis启用了预编译功能,
#{}:在预编译过程中,会把#{}部分用一个占位符?代替,执行时,将入参替换编译好的sql中的占位符“?”,能够很大程度防止sql注入
${}:在预编译过程中,${}会直接参与sql编译,直接显示数据,无法防止Sql注入,一般用于传入表名或order by动态参数
SQL注入
select * from ${tableName} where name = #{name}
如果表名为user; delete user; --
上述sql就会变为:
select * from user; delete user; -- where name = ?;
就会达到非法删除user表的功效!!!!
MyBatis是如何做到SQL预编译的呢?
其实在框架底层,是JDBC中的PreparedStatement类在起作用
重要:接受从用户输出的内容并提供给语句中不变的字符串,这样做是不安全的。这会导致潜在的SQL注入攻击,因此你不应该允许用户输入这些字段,或者通常自行转义并检查。
阅读全文
0 0
- mybatis中的#和$的区别
- mybatis中的#和$的区别?
- mybatis中的#和$的区别?
- mybatis中的#和$的区别?
- mybatis中的#和$的区别
- mybatis中的#和$的区别
- mybatis中的#和$的区别
- mybatis中的#和$的区别
- mybatis中的#和$的区别
- MyBatis中的#和$的区别
- mybatis中的#和$的区别
- mybatis中的#和$的区别?
- mybatis中的#和$的区别
- mybatis中的#和$的区别
- Mybatis中的#和$的区别
- mybatis中的#和$的区别
- mybatis中的#和$的区别
- mybatis中的#和$的区别
- js-浅析js指向-this绑定优先级及特殊情况说明
- 利用线上yum源,制作本地yum源
- 模糊控制系统模糊控制器模块(一)---模糊化
- 335x uboot 看门狗喂狗
- TCP/UDP
- mybatis中的#和$的区别
- SpringBoot整合Mybatis出现的错误
- 用两个线程玩猜数字游戏,第一个线程负责随机给出1~100之间的一个整数,第二个线程负责猜出这个数。要求每当第二个线程给出自己的猜测后,第一个线程都会提示“猜小了”、“猜大了”或“猜对
- dubbo简介
- MFC显示JPG格式的图片(2-1)
- Android Studio打包apk
- 12Linux安装-CRT安装配置
- 机器学习 矩阵奇异值分解(SVD)及其应用
- C++STL 第十次实验(词频统计)