首页 » Web前端 » php预编译的sql技巧_渗透测试之SQL注入一

php预编译的sql技巧_渗透测试之SQL注入一

访客 2024-11-16 0

扫一扫用手机浏览

文章目录 [+]

作者:随风kali

什么是SQL注入

php预编译的sql技巧_渗透测试之SQL注入一

SQL注入即是指web运用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web运用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情形下实现造孽操作,以此来实现欺骗数据库做事器实行非授权的任意查询,从而进一步得到相应的数据信息。

php预编译的sql技巧_渗透测试之SQL注入一
(图片来自网络侵删)

这里以一个PHP的SQL语句代码为例

$SQL = "select from '某字段' where id = $id";

由于这里的参数id可以掌握,且这个id被带进了数据库查询,以是一些意图不轨的人可以通过拼接SQL语句来进行攻击。

产生SQL注入须要的条件

SQL注入的产生须要两个条件

1.我们通报给后真个参数是可以掌握的

2.参数内容会被带入到数据库查询

验证是否存在SQL注入

还是以这个代码为例 $SQL = "select from '某字段' where id = $id";

在这里我们可以掌握的参数是id这个参数,以是我们输入1‘的时候。
这时查询语句实行的内容就为

select from '某字段' where id = 1’

由于后面有一个单引号,这样的语句不符合数据库语法的规范,以是会报错,从而判断出该处是否存在SQL注入。

SQL注入的分类

SQL注入分为很多种,有联合注入、布尔注入、报错注入、韶光注入、堆叠注入、二次注入、宽字节注入、cookie注入等等等。
当然这些注入所产生的事理都是一样,如上文所讲。
在接下来的文章呢,笔者也会对这些注入结合实例进行全部写出来。

SQL注入的防御

方案一

采取预编译技能

INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)

利用预编译的SQL语句,SQL语句的语义不会是不会发生改变的。
预编译语句在创建的时候就已经将指定的SQL语句发送给了DBMS,完成理解析,检讨,编译等事情,以是攻击者无法改变SQL语句的构造,只是把值赋给?,然后将?这个变量传给SQL语句。
当然还有一些通过预编译绕过某些安全防护的操作,大家感兴趣可以去搜索一下。

方案二

严格掌握数据类型

在java、c等强类型措辞中一样平常是不存在数字型注入的,由于在接管到用户输入id时,代码一样平常会做一个int id 的数据类型转换,如果我们输入的是字符串的话,那么这种情形下,程序就会报错。
但是在PHP、ASP这些没有强调处理数据类型的措辞,一样平常我们看到的吸收id的代码都是如下等代码。

$id = $_GET['id'];

$SQL = "select from '某字段' where id = $id;";

这样的代码攻击者就可以通过布局id参数利用联合查询等手腕进行SQL注入,如果这里我们加入一个检讨数字类型函数is_numeric()这样就可以防止数字型注入了。

方案三

对分外的字符进行转义

数字型注入可以通过检讨数据类型防止,但是字符型不可以,那么怎么办呢,最好的办法便是对分外的字符进行转义了。
比如在MySQL中我们可以对" ' "进行转义,这样就防止了一些恶意攻击者来闭合语句。
当然我们也可以通过一些安全函数来转义分外字符。
如addslashes()等,但是这些函数并非一劳永逸,攻击者还可以通过一些分外的办法绕过。

标签:

相关文章

房山第一探寻历史文化名区的魅力与发展

房山区,位于北京市西南部,历史悠久,文化底蕴深厚。作为北京市的一个重要组成部分,房山区的发展始终与首都的发展紧密相连。房山区积极推...

Web前端 2025-02-18 阅读1 评论0

手机话费开钻代码数字时代的便捷生活

我们的生活越来越离不开手机。手机话费作为手机使用过程中的重要组成部分,其充值方式也在不断创新。手机话费开钻代码应运而生,为用户提供...

Web前端 2025-02-18 阅读1 评论0

探寻专业奥秘如何查询自己专业的代码

计算机科学已成为当今社会不可或缺的一部分。掌握一门专业代码对于个人发展具有重要意义。面对繁杂的学科体系,如何查询自己专业的代码成为...

Web前端 2025-02-18 阅读1 评论0