梦の博客 欢迎来到我的破站
歌曲封面 未知作品

网站已运行 364 天 2 小时 20 分

Powered by Typecho & Sunny

2 online · 54 ms

Title

PHP代码审计之SQL注入

云梦

·

Article

一、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语句当中存在?占位符

现在已有 0 条评论,0 人点赞
Comment
发表
搜 索 消 息 足 迹
你还不曾留言过..
你还不曾留下足迹..
博主