1.2 课题研究内容与研究意义
目前国内对网络安全理论与技术应用的研究还处在初级阶段,对SQL注入攻击的研究也处在逐步发展的阶段。鉴于以上情况,论文研究目标主要针对目前存在的SQL注入攻击所带来的危害,深入研究SQL注入原理及注入过程,并在以上的基础上进一步提出SQL注入漏洞检测和防范策略。国内对SQL注入攻击和检测防御的研究主要集中在注入攻击原理和关键技术的探讨上。论文总结分析SQL注入的防范技术,提出改进的SQL注入防范模型。
本论文的主要研究内容有:
(1)阐述SQL注入攻击原理和一般流程;
(2)分析不同的SQL注入攻击防范策略;
(3)针对SQL注入漏洞攻击设计一款扫描工具;
(4)归纳一些常用的SQL注入攻击防范策略和防御措施。
随着信息产业化的迅速发展,互联网的复杂性不断增长,网上的服务种类不断增多。目前,很多Web系统都存在着脚本安全问题,例如,攻击者从脚本安全的漏洞方面出发,访问有权限限制的目录,有的甚至可以盗取系统管理员的权限。本文针对SQL Server数据库安全性,介绍了SQL注入攻击的概念和原理,提出了若干防范策略,最大限度地减少SQL注入攻击的可能,保护数据库的安全,使互联网服务的安全性得到保障。
1.3 国内外研究现状分析
2.SQL注入攻击技术原理
由于Web服务器的漏洞与程序代码的不严密性,对Web服务器的脚本攻击行为逐渐增多,绝大多数是利用ASP或PHP等脚本注入为主要的攻击方法,加上Web网站的迅速发展,SQL注入逐渐成为攻击的主流。
2.1 SQL语言概述
SQL(Structured Query Language)即结构化查询语言,于1974年由Boyce和Chamberlin提出。1975至1979年IBM公司研制出著名的关系数据库管理系统原型并且实现了该语言。由于它语言简捷、功能丰富倍受用户及计算机界的好评,被许多软件公司和计算机方面的公司所采用。经各公司的不断修改、扩充及逐步完善,SQL语言最终发展成为一种专门的关系数据库标准语言并成为数据库领域中的主流语言。精通SQL语言是研究SQL注入必备的技能。SQL注入是一种基于数据库语法漏洞的攻击,攻击者通过非法输入进而从数据库中获得访问权限,实现非法入侵、获取密码或删除重要数据等各种非法操作。
2.2 SQL注入攻击原理
根据SQL注入攻击原理的差别,可将SQL注入攻击划分为三种类型:常规注入、字典注入和盲注。
下面将分别介绍常规注入和盲注的实现原理。
(1)常规注入实现原理
常规注入即利用系统的错误信息,从中获取有价值的信息。常规注入的缺点就是在错误信息屏蔽后会失效。下面以http://www.ccb.com/abc.asp?id=12为例分析常规注入的实现原理。当id是数字类型的参数12时,在Web应用程序中动态生成的SQL查询语句为:select*from table where id=12。以猜想数据库名为例分析SQL注入的攻击原理:
猜解数据库名一般是在URL地址栏中构造特殊的SQL语句:Select*from table where id=12 and db_name()+char(124)--。
Char(124)对应的字符是“|”。在SQL Server 数据库中db_name()的返回值是nvarchar类型的数据库名。系统试图将db_name()返回值从nvarchar类型转换成为int类型,在类型转换过程中一定会出错,出错提示一般是:“将nvarchar值转换为数据类型int列时发生语法错误。”按照上述方法即可获得数据库名字,同样也可以获得数据库表名、类型等信息。
(2)盲注实现原理
盲注是在推理的基础上,通过向服务器请求含有“true/false”逻辑值语句,结合客户端页面响应进而获得想要的信息。通俗的说就是在提交的数据中加入猜想数据到数据库中,如果正确即可返回想要得到的结果,否则继续访问其它数据。 SQL注入攻击防范策略研究+文献综述(2):http://www.751com.cn/jisuanji/lunwen_3925.html