SQL注入攻击与防御Word文档格式.docx
- 文档编号:15857458
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:19
- 大小:821.85KB
SQL注入攻击与防御Word文档格式.docx
《SQL注入攻击与防御Word文档格式.docx》由会员分享,可在线阅读,更多相关《SQL注入攻击与防御Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
班级
指导教师
二〇一一年六月
本科毕业设计(论文)诚信承诺书
本人郑重声明:
所呈交的毕业设计(论文)(题目:
SQL注入攻击及防范措施研究)是本人在导师的指导下独立进行研究所取得的成果。
尽本人所知,除了毕业设计(论文)中特别加以标注引用的内容外,本毕业设计(论文)不包含任何其他个人或集体已经发表或撰写的成果作品。
作者签名:
年月日
(学号):
摘要
随着网络应用的日益广泛,人们对网络安全的重视程度越来越高。
与此同时,网络攻击也不断变换目标和攻击方法。
现在,针对Web应用系统的攻击已经成为网络安全攻防新焦点。
而在对Web应用系统的所有攻击中,SQL注入成为Web应用系统的严重安全隐患。
通过该类型攻击,攻击者可以非法获得对Web应用程序数据库的无限制的访问权限,进一步得到企业和网络用户的机密信息,如银行账号、交易数据等等,给网络用户和企业造成了巨大的生活困扰和经济损失,这就迫切要求对SQL注入攻击实施全面防御。
本文就是基于此目的,对SQL注入攻击和防范进行深入研究。
本文首先阐述本课题的研究背景、现状和主要研究内容;
接着研究了SQL注入攻击的技术背景和原理;
最后,在现有防范方法的基础上提出了一些防范措施。
关键词:
SQL注入,网络安全,编码防范
SQLinjectionattacksandPreventiveMeasures
Abstract
Withanincreasinglyextensiveapplicationofthenetwork,peopleattachmoreandmoreimportancetonetworksecurityAtthesametime,changestakeplaceinthetargetsandmethodsofnetworkattacks.Atpresent,attacksaimedatWebapplicationshavebecomeanewfocusofnetworksecurityattackanddefense.SQLinjectionhasbecomeaserioussecurityriskamongalltheattacksagainstWebapplication.TheSQLinjectionattackallowsanattackertoaccesstheunderlyingdatabaseunrestrictedly,andfurthermore,retrievestheconfidentialinformationofthecorporationandthenetworkuser,suchasbankaccountnumber,transactiondata,etc.SQLinjectioncancausegreatdistressandeconomiclossestoenterprisesandInternetusers,sothereisanurgentrequirementforcomprehensivedefensetoSQLinjectionattacks.Forthisreason,thispaperconductsanin-depthresearchonSQLinjectionanddefense.
Firstly,thepaperelaboratesthebackgroundofthissubject,statusandmainresearchcontents.Secondly,itexploresthetechnicalbackgroundandtheoryoftheSQLinjectionattacks.Finally,thepaperputsforwardanovelpreventionmethodbasedonparsetreeoriginatingfromtheexistingdefensemethod.
KeyWords:
SQLInjection;
NetworkSecurity;
Codingdefense
第一章引言
1.1课题背景
当今世界,网络技术与信息技术高速发展,B/S模式具有界面统一,使用简单,易于维护,扩展性好,共享度高等优点,B/S模式越来越多的被应用于程序编写中。
但由于B/S建立在广域网之上,对安全的控制能力较弱,且开发人员的水平和经验参差不齐,相当一部分的程序员在编写代码时没有对用户的输入数据或者是页面中所携带的信息进行必要的合法性判断。
攻击者利用这个机会提交一段数据库查询代码,根据程序返回的结果,就可以获得一些数据库信息。
1.2课题研究意义
SQL注入攻击存在于大多数访问了数据库且带有参数的动态网页中。
SQL注入攻击相当隐秘,表面上看与正常的Web访问没有区别,不易被发现,但是SQL注入攻击潜在的发生概率相对于其他Web攻击要高很多,危害面也更广。
其主要危害包括:
获取系统控制权、XX状况下操作数据库的数据、恶意篡改网页内容、私自添加系统账号或数据库使用者账号等。
现在流行的数据库管理系统都有一些工具和功能组件,可以直接与操作系统及网络进行连接。
当攻击者通过SQL注入攻击一个数据库系统,其危害就不只局限于存储在数据库中的数据,攻击者还可以设法获得对DBMS(数据库管理系统)所在的主机进行交互式访问,使其危害从数据库向操作系统、甚至整个网络蔓延。
因此,我们不仅应当将SQL注入攻击看作是一个对存储在数据库上数据的威胁,而应当看作是对整个网络的威胁。
1.3国内外研究现状
国内对SQL注入攻击研究主要包括SQL注入攻击的原理和SQL注入攻击的关键技术。
国内对SQL注入的检测与防范的研究主要集中于以下几个方面:
(1)提出了各种各样的防范模型,如在客户端和服务器端进行检测的SQL注入攻击检测/防御/备案模型。
(2)在服务端正式处理之前对提交数据进行合法性检查。
(3)屏蔽出错信息,这样攻击者就不能从错误信息中获得关于数据库的信息。
(4)对Web服务器进行安全设置,如去掉Web服务器上默认的一些危险命令。
(5)不用字符串连接建立SQL查询,用存储过程编写代码减少攻击。
(6)对包含敏感信息的数据加密,如在数据库中对密码加密存储等。
国内对于SQL注入漏洞检测的研究还很少,大多数还是停留在攻击工具的层面上,很少将注入工具用于网站安全检测。
国外学者对SQL注入检测与防范研究领域一般分为两大类。
(1)漏洞识别(漏洞检测):
这类防范主要研究识别应用程序中能导致SQL注入攻击的漏洞的位置。
(2)攻击防御:
这类方法可以进一步分为编码机制和防御机制。
编码机制是一个很好实践的防范方法。
SQL注入攻击产生的根本原因在于没有足够的验证机制,因而从编码方面防范攻击有很好的理论基础。
编码机制有四种方法:
第一,对输入类型检测。
如果输入类型是数字型,那么限制其为数字型,这样就可以避免很多攻击,但该类检测机制存在很大局限性。
第二,对输入内容编码。
因为攻击者可以使用变换后的字符作为输入,而数据库将其转换之后作为SQL符号,可以在应用程序中对这些变化后的字符进行编码,而在数据库中将其还原为正常字符。
第三,正模式匹配。
通常可以写一段程序用于检测输入是否有不合法字符。
第四,识别输入源。
防御机制包括:
(1)黑盒测试法
(2)静态代码检测器(3)结合静态和动态的分析方法(4)新查询开发范例(5)入侵检测系统(6)代理过滤(7)指令集随机化方法(8)动态检测方法等。
【8】
1.4课题研究内容
本课题介绍了SQL注入的背景、危害,研究了SQL注入的基本原理、注入的基本方法以及一些相关的防御措施。
SQL注入的方法主要从手工注入和工具注入两方面进行实现,并从编程、数据库配置、操作系统配置防范等几方面来阐述如何防御SQL注入攻击。
第二章SQL语言及SQL注入环境分析
2.1SQL语言简介
SQL全称是“结构化查询语言(StructuredQueryLanguage)”,最早是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEMR开发的一种查询语言,它的前身是SQUARE语言。
SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言得到了广泛的应用。
目前,SQL语言已被确定为关系数据库系统的国际标准,被绝大多数商品化关系数据库系统采用,如Oracle、Sybase、DB2、Informix、SQLServer这些数据库管理系统都支持SQL语言作为查询语言。
结构化查询语言SQL是一种介于关系代数与关系演算之间的语言,其功能包括查询、操纵、定义和控制四个方面,是一个通用的功能极强的关系数据库标准语言。
在SQL语言中不需要告诉SQL如何访问数据库,只要告诉SQL需要数据库做什么。
2.2SQL注入攻击网络背景
现在让人们越来越头疼的是面临越来越复杂的网站技术,他们利用Internet执行各种恶意活动,如身份窃取、私密信息窃取、带宽资源占用等。
它们潜入之后,还会扩散并不断更新自己。
这些活动常常利用用户的好奇心,在用户不知道或未允许的情况下潜入用户的PC,不知不觉中,信息就被传送出去,危害十分严重。
网络威胁可以分为内部攻击和外部攻击两类。
前者主要来自信任网络,可能是用户执行了未授权访问或是无意中定制了恶意攻击;
后者主要是由于网络漏洞被利用或者用户受到恶意程序制定者的专一攻击。
此外攻击者还会采用多种形态,甚至是复合形态,比如病毒、蠕虫、特洛伊、间谍软件、僵尸、网络钓鱼电子邮件、漏洞利用、下载程序、社会工程、黑客等攻击手段都可以导致用户信息受到危害,或者导致用户所需的服务被拒绝或劫持。
2.3SQL注入概述
SQL注入是一种将恶意的SQL代码插入或添加到应用(用户)的输入参数的攻击,攻击者探测出开发者编程过程中的漏洞,利用这些漏洞,巧妙的构造SQL语句,对数据库系统的内容进行直接检索或修改。
凡是构造SQL语句的步骤均存在被潜在攻击的风险,因为SQL的多样性和构造时使用的方法均提供了丰富的编码手段。
SQL注入的主要方式是将代码插入到参数中,这些参数会被置入到SQL命令中加以执行。
不太直接的攻击方式是将恶意代码插入到字符串中,之后再将这些字符串保存到数据库的数据表中或将其当作元数据。
将存储的字符串置入动态SQL命令中,恶意代码就将被执行。
如果未对动态构造的SQL语句所使用的参数进行正确性审查,那么攻击者就很可能会修改后台SQL语句的构造。
如果攻击者能够修改SQL语句,那么该语句将与应用的用户拥有相同的运行权限。
当SQL服务器执行与操作系统交互的命令时,该进程将与执行命令的组件拥有相同的权限。
第三章SQL注入攻击的实现
3.1SQL注入实现原理
根据SQL注入的原理的不同,可以将SQL注入方式分为三大类:
常规注入、字典猜解注入和盲注入。
常规注入方法是利用了系统的错误信息,从错误信息中获取数据库的信息。
常规注入方法在屏蔽错误信息后失效,盲注入方法就在此时使用,字典猜解也可在屏蔽错误信息的情况下使用。
字典猜解注入:
当前管理员和多数网络用户
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 注入 攻击 防御