一、sql注入--其实是web应用程序对用户端输入的数据合法性没有判断,并且用户端的输入不可控,则将可能存在输入任意的sql语句均可以进行入到数据库执行,造成一定风险。
sql注入两个重要条件:
1、传输的参数可被用户控制
2、传入的参数可以拼接sql语句,并且可以带入到数据库查询。
二、sql注入不同维度方式分类
1、数据类型分类-----数字型和字符型(取决于数据库对数据类型的定义,在数据库中数据只有三种类型,数字(整型、浮点型等)、字符(char varchar等)、时间),通常web前段使用的都是数字或字符char等,所以数据类型只有两种
2、注入位置分类--GPC,只要是能和数据库交互的地方,都可能存在注入攻击,常用的有get、表单请求、留言板、登录页面、搜索框、注册等
(1)get注入
(2)post注入
(3)http头部注入(referer、user-agent等)
(4)cookie注入
3、注入位置分类
(1)union注入
(2)bool注入
(3)报错回显注入
通过数据库查询报错,返回我们想要的信息,即为报错回显注入。
(4)时间盲注
(5)堆叠注入
(6)二次注入
(7)、宽字节注入
(8)cookie注入
(9)base64注入
(10)XFF注入
(11)sql注入绕过
三、是否存在sql注入判断
四、常见的sql注入的防御:
1、过滤危险字符
2、使用预编译语句(不太理解,啥是预编译)