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

所属分类: 网络安全 / 黑客教程 阅读数: 266
收藏 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注入内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!

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

病毒、木马ARP攻击行为的原理分析及解决思路

带有ARP攻击行为的病毒,木马很是常见,主要有两种表现形式:频繁的出现地址冲突的现象以及 上网速度很慢甚至上不了网,这类问题如何解决呐?
收藏 0 赞 0 分享

ARP欺骗攻击原理另一种理解方法

本文子明特别用通俗的例子,说明ARP欺骗攻击的原理,使ARP欺骗攻击原理更加清楚的展现在你的面前。
收藏 0 赞 0 分享

七招教你抵御ARP欺骗攻击

本文介绍了七种简易方法助你抵御ARP欺骗攻击,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

全面剖析DDoS攻击 黑客常用攻击方式

纵观网络安全攻击的各种方式方法,其中DDoS类的攻击会给你的网络系统造成更大的危害。因此,了解DDoS,了解它的工作原理及防范措施,是一个计算机网络安全技术人员应必修的内容之一。
收藏 0 赞 0 分享

最简单的防止ARP欺骗的方法

局域网中的计算机容易遭受攻击的原因是使用动态的arp获取协议所以很不安全,当把arp协议设为静态的可以杜绝arp攻击的发生,需要了解的朋友可以参考一下
收藏 0 赞 0 分享

路由器防止ARP欺骗的设置步骤

ARP欺骗是一个比较常见的网络问题,它会盗取用户账号,还会导致网络的瘫痪。为此,很多路由器开发商都设置了路由器防止ARP欺骗的功能。下面小编说说路由器防止ARP欺骗的设置方法。
收藏 0 赞 0 分享

怎样隔离ARP攻击源 电脑受到ARP断网攻击应对策略

局域网如何隔离感染ARP病毒的电脑呢?当局域网电脑存在ARP病毒时,会导致其它电脑出现断网现象。对此比较好的解决方法就是将ARP攻击源给隔离掉。以下就是具体的实现方法。
收藏 0 赞 0 分享

如何从运营角度保障DNS安全

如何从不同层面综合运营,保证DNS服务安全高效的运行?DNSPod工程师认为,主要应该从状态监控、信息告警、事件处理、数据记录、综合运营数据分析这五个方面入手。
收藏 0 赞 0 分享

DNS欺骗的原理 DNS防御实战演练

DNS即Domain Name System的缩写,域名系统以分布式数据库的形式将域名和IP地址相互映射。DNS协议即域名解析协议,简单的说:DNS是用来解析域名的。
收藏 0 赞 0 分享

对付DDoS攻击的三大绝招

不知道身为网络管理员的你是否遇到过服务器因为拒绝服务攻击都瘫痪的情况呢?就网络安全而言目前最让人担心和害怕的入侵攻击就要算是拒绝服务攻击了。和传统的攻击不同,采取的是仿真多个客户端来连接服务器,造成服务器无法完成如此多的客户端连接,从而无法提供服务。
收藏 0 赞 0 分享
查看更多