一、PHP连接数据库
1.1、mysqli_connect连接数据库
常规用到两个PHP中自带方法mysqli_connect表示进行连接数据库,并且在没有链接成功的时候使用方法mysqli_connect_error进行打印出来当中哪里出现了问题。这个函数是最容易出现sql注入的,因为函数没有自带过滤和预编译。
1.2、1.2、new mysqli连接数据库
这种方式就偏向于mysqli当中的连接数据库的方式了,其实就是创建一个myslqi的实例。
1.3、PDO连接方式
这种方式还是比较常见的,其本质也是去实例化一个PDO的实例化对象进行调用。
二、操作sql语句
2.1、mysqli_query操作SQL语句
在mysqli_query操作SQL语句下是不存在预编译这个技术的,这也是为什么这个技术后来被弃用了。
2.2、new mysqli操作SQL语句
♾️ php 代码:$stmt = $mysqli->prepare('SELECT * FROM tb_menu WHERE id = ?');
当sql语句当中存在了?占位符的时候就可以进行换方向了。
2.3、PDO操作SQL语句
♾️ php 代码:$stmt = $conn->prepare('SELECT * FROM tb_menu WHERE id = :id'); // 使用占位符处理语句
$stmt->execute(['id' => $sql]); // 传递参数并执行查询
一个是在SQL语句当中对我们可控内容前加入了一个:号,并且进行使用了方法execute进行预编译。那么这两个即为我们审计时候看的,看这个语句有没有用到:以及execute
总结
PDO不存在SQL注入:使用了execute方法、在sql语句当中存在:
new mysqli不存在SQL注入:SQL语句当中存在?占位符