前言 本文使用pdo的预处理方式可以避免sql注入。下面话不多说了,来一起看看详细的介绍吧 在php手册中'PDO--预处理语句与存储过程'下的说明: 很多更成熟的数据库都支持预处理语句的概念。什么是
前言
本文使用pdo的预处理方式可以避免sql注入。下面话不多说了,来一起看看详细的介绍吧
在php手册中'PDO--预处理语句与存储过程'下的说明:
下边分别说明一下上述两点好处:
1.首先说说Mysql的存储过程,mysql5中引入了存储过程特性,存储过程创建的时候,数据库已经对其进行了一次解析和优化。其次,存储过程一旦执行,在内存中就会保留一份这个存储过程,这样下次再执行同样的存储过程时,可以从内存中直接中读取。mysql存储过程的使用可以参看:https://www.jb51.net/article/7032.htm
对于PDO,原理和其相同,只是PDO支持EMULATE_PREPARES(模拟预处理)方式,是在本地由PDO驱动完成,同时也可以不使用本地的模拟预处理,交由mysql完成,下边会对这两种情况进行说明。
2.防止sql注入,我通过tcpdump和wireshark结合抓包来分析一下。
在虚拟机上执行一段代码,对远端mysql发起请求:
<?PHP
$pdo = new PDO("mysql:host=10.121.95.81;dbname=thor_cms;charset=utf8", "root","qihoo@360@qihoo");
$st = $pdo->prepare("select * from share where id =? and uid = ?");
$id = 6;
$uid = 521;
$st->bindParam(1, $id);
$st->bindParam(2, $uid);
$st->execute();
$ret = $st->fetchAll();
print_r($ret);
--结束END--
本文标题: 使用PDO防sql注入的原理分析
本文链接: https://lsjlt.com/news/52571.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-10-23
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0