mysql prepare为什么可以防注入
2021/11/6 19:10:00
本文主要是介绍mysql prepare为什么可以防注入,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
先说原因:PreparedStatement 预编译,再填充参数的,就算参数是字符串拼接的方式,也会把整体当成1个参数,不再进行语法语义等分析。
测试例子1:
1 创建存储过程如下: 2 drop procedure if exists `insert_test`; 3 delimiter && 4 create procedure `insert_test`(in pdatas mediumblob) 5 begin 6 declare stmt mediumblob default ''; 7 start transaction; 8 9 set @a = pdatas; 10 set @sqlstr = ''insert into test(name, level) value (?,1); 11 prepare stmt from @sqlstr; 12 execute stmt using @a; 13 deallocate prepare stmt; 14 15 commit; 16 end 17 &&
执行注入语句:
1 call insert_test("aa,1),(bb,");
如果能注入,则产生2条数据,而结果是一行数据:
name:aa,1),(bb,
level:1
说明,就算字符串以拼接的方式执行,还是会把字符串整体,当成1个参数
这篇关于mysql prepare为什么可以防注入的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-25如何部署MySQL集群资料:新手入门教程
- 2024-12-24MySQL集群部署资料:新手入门教程
- 2024-12-24MySQL集群资料详解:新手入门教程
- 2024-12-24MySQL集群部署入门教程
- 2024-12-24部署MySQL集群学习:新手入门教程
- 2024-12-24部署MySQL集群入门:一步一步搭建指南
- 2024-12-07MySQL读写分离入门:轻松掌握数据库读写分离技术
- 2024-12-07MySQL读写分离入门教程
- 2024-12-07MySQL分库分表入门详解
- 2024-12-07MySQL分库分表入门指南