SQL注入及危害、防御手段的处理方法

所属分类: 网络安全 / 黑客教程 阅读数: 160
收藏 0 赞 0 分享

一、什么是SQL注入

SQL(Structured Query Language),即结构化查询语言,用于操作关系型数据库管理系统。目前,大多数Web编程语言提供了操作SQL的接口,以方便与数据库进行交互。但是在开发Web应用的过程中,由于忽视了代码的健壮性和安全性,攻击者可以构造巧妙的SQL语句从而获取到敏感数据,因此导致了SQL这种攻击方式的流行。

二、SQL注入的原理

在B/S模式中,用户可以通过Get或Post等方式,对服务器发出HTTP请求。在服务器端,对数据库执行查询操作,将查询的结果返回浏览器端。黑客利用上述过程,将精心构造的请求放到传入的变量参数中,让服务器端执行恶意代码,从而达到了读取数据库中敏感信息的效果,甚至将数据库删除。这一攻击过程就是SQL注入,它的原理如图所示。

在这里插入图片描述

从访问流程上来看,攻击者与普通的用户是没有任意区别的,都是将数据发送到服务端,服务端处理数据并返回结果。但是攻击者对输入数据进行了精心的处理,在进行SQL语句操作的时候,效果就会和正常流程完全不同,从而达到获取整站数据的效果。

三、触发SQL注入的方式

攻击者通常可以使用以下几种方式来触发SQL注入漏洞:
(1)用户的输入。通常使用HTTP的GET或POST请求传输用户数据,通过修改POST包中的数据或者GET请求中URL参数值来实现恶意代码注入。
(2)通过HTTP请求头。服务器端可能会保存用户的IP及User-Agent等信息,此时,攻击者可以在X-Forwarded-For 或UA等请求头字段中构造语句进行SQL注入。
(3)二阶注入。攻击者在HTTP请求中提交恶意输入,服务端将恶意输入保存在数据库中,攻击者紧接着提交第二次HTTP请求。为处理第二次请求,服务端需要查找数据库,触发了之前存储的恶意输入,并将结果返回给攻击者。攻击者需要通过两次独立请求才可以实现SOL注入的目的,这种攻击方式因此得名二阶注入。

四、SQL注入的特点

SQL注入具有以下特点:
(1)变种多。当页面可以返回错误的信息时,可以使用基于错误(Error-based)的注入方法。如果服务端对返回的错误进行过滤,可以使用基于布尔(Bool-based)或基于时间(Time-based)的注入方法。另外,熟练的攻击者会适当调整攻击参数,以绕过特定字段的检测,使传统的特征匹配方法检测不到注入。
(2)攻击简单。目前网上流行各种开发的SQL注入工具,使得发动攻击的门槛大大降低。即使是毫无经验的“脚本小子”,借助这些工具也可以对目标网站进行攻击。
(3)危害大。攻击者一旦得手,轻则获取整个网站的敏感数据,重则写入木马,控制整个服务器,破坏力极大。在近几年OWASP公布的Web应用十大安全漏洞排名中,SOL注入稳居榜首4。虽然其原理及利用方式并不复杂,但对目标网站造成的破坏力巨大。

五、SQL注入的危害

(1)攻击者未经授权可以访问数据库中的数据,盗取用户的隐私以及个人信息,造成用户的信息泄露。
(2)可以对数据库的数据进行增加或删除操作,例如私自添加或删除管理员账号。
(3)如果网站目录存在写入权限,可以写入网页木马。攻击者进而可以对网页进行篡改,发布一些违法信息等。
(4)经过提权等步骤,服务器最高权限被攻击者获取。攻击者可以远程控制服务器,安装后门,得以修改或控制操作系统。

六、SQL注入的漏洞检测

SQL注入漏洞的检测分为手动检测和自动检测。手动检测是安全测试人员对某个特定区间的URL进行手工注入测试;自动检测是利用爬虫爬取网站的所有链接,对所有的链接自动进行注入测试。在大型应用中,手动检测的工作量是巨大的,一般采用自动检测的方式。

七、SQL注入的防御手段

防御SQL注入的核心思想是对用户输入的数据进行严格的检查,并且对数据库
的使用采用最小权限分配原则。目前SQL注入的防御手段有以下几种:
(1)基于攻击特征的匹配过滤。这是目前使用最为广泛的方式,系统会将攻击特征做成数据库,一旦匹配到这些攻击特征就会认定检测到SQL注入。这种方式可以有效的过滤大部分SQL注入攻击,但是大大增加了程序的复杂度,同时可能影响到业务的正常查询。
(2)对用户输入进行转义。例如,常见的SQL注入语句中都含有“‘’”,通过转义将“‘’”转义为“/”,SQL注入语句就会达不到攻击者预期的执行效果,从而实现对SQL注入进行防御。
(3)数据类型进行严格定义,数据长度进行严格规定。比如查询数据库某条记录的id,定义它为整型,如果用户传来的数据不满足条件,要对数据进行过滤。数据长度也应该做严格限制,可以防止较长的SQL注入语句。
(4)严格限制网站访问数据库的权限。
(5)近几年来,随着机器学习与人工智能技术的火热,基于机器学习的检测SQL注入方法成为了新的研究方向。首先将样本SQL语句转换为特征向量集合,使用机器学习的方法进行训练,将得到的模型投入使用,利用训练的模型检测传入的数据是否包含恶意SQL注入。
(6)其他防御措施。例如,避免网站显示SQL执行出错信息,防止攻击者使用基于错误的方式进行注入;每个数据层编码统一,防止过滤模型被绕过等。

Web应用程序存在SQL注入,往往是因为在程序编写的过程中,开发人员违背了“代码与数据分离”原则。一方面,攻击者可以任意更改输入数据;另一方面,攻击者可以在数据里构造代码,让服务器端把数据解析成代码执行。所以,只要遵循“代码与数据分离”原则,对用户端传入的数据进行严格检查,从技术角度而言,可以实现完全防御SQL注入攻击。

到此这篇关于SQL注入及危害、防御手段的处理方法的文章就介绍到这了,更多相关SQL注入内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!

更多精彩内容其他人还在看

3389远程终端的SHIFT后门自动扫描[自动关闭错误连接]

首先3389的SHIFT后门极少 其次大部分SHIFT后门都加密 所以手工一个一个尝试是挺傻的,写成自动扫描的话,还能让人忍受
收藏 0 赞 0 分享

CSRF的攻击方式详解 黑客必备知识

CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF
收藏 0 赞 0 分享

抓取管理员hash值(哈希)的另类方法

哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计
收藏 0 赞 0 分享

网站安全教程 绕过D盾进行注入的方法(图文教程)

D盾_IIS防火墙专为IIS设计的一个主动防御的保护软件,以内外保护的方式 防止网站和服务器给入侵,在正常运行各类网站的情 况下,越少的功能,服务器越安全的理念而设计! 限制了常见的入侵方法,让服务器更安全!
收藏 0 赞 0 分享

WikkaWiki 1.3.2 Spam Logging PHP注射的方法

WikkaWiki 1.3.2 Spam Logging PHP注射的详细方法代码
收藏 0 赞 0 分享

局域网安全教程 HSRP攻击和防范的方法介绍(图文教程)

热备份路由器协议(HSRP)的设计目标是支持特定情况下 IP 流量失败转移不会引起混乱、并允许主机使用单路由器,以及即使在实际第一跳路由器使用失败的情形下仍能维护路由器间的连通性。换句话说,当源主机不能动态知道第一跳路由器的 IP 地址时,HSRP 协议能够保护第一
收藏 0 赞 0 分享

Free Realty v3.1-0.6的缺陷介绍及其修复方法

Free Realty v3.1-0.6的缺陷介绍及其修复方法,请看下面
收藏 0 赞 0 分享

SQL通用防注入系统asp版漏洞

今晚群里朋友叫看个站,有sql防注入,绕不过,但是有发现记录wrong的文件sqlin.asp。
收藏 0 赞 0 分享

伪黑客的成功的秘密:tomcat入侵和Jboss入侵的方法介绍(图)

黑客必须要有专业的知识,丰富的经验。而伪黑客不需要,只需要几个工具,扫描默认口令、弱口令、漏洞,就能利用。
收藏 0 赞 0 分享

黑客对社交网站攻击的常见五大手法(图文)

揭开社交网站背后的暗黑秘密
收藏 0 赞 0 分享
查看更多