SQL注入攻击的危害与防范

SQL注入攻击的危害与防范

ID:43984585

大小:43.50 KB

页数:6页

时间:2019-10-17

SQL注入攻击的危害与防范_第1页
SQL注入攻击的危害与防范_第2页
SQL注入攻击的危害与防范_第3页
SQL注入攻击的危害与防范_第4页
SQL注入攻击的危害与防范_第5页
资源描述:

《SQL注入攻击的危害与防范》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、信息系统开发中的系统安全防范设计王培国(成都军区四川成都610011)摘要:本文从B/S结构信息系统的安全防范问题出发,以防范SQL注入式攻击为例,从应用系统编程、数据库系统设置、操作系统设置三个层次提出了具体的防范措施。关键词:信息系统,系统安全,SQL注入攻击,防范措施1引言随着网络技术和信息技术的发展,信息系统的体系结构也逐渐从C/S(客户/服务器)模式发展成B/S(浏览器/服务器)模式,B/S模式的信息系统具有更好的可维护性,系统的安装、运行、升级都十分方便,但是,正是这种方便,同时也给

2、了攻击者实施攻击提供了方便,SQL注入攻击就是其中的一种,下面以SQL注入攻击为例阐述其原理与危害以及如何在信息系统开发与部署中设计相应的防范措施。2SQL注入攻击的原理与危害SQL是结构化查询语言(StructuredQueryLanguage)的缩写,是标准的数据库操作语言,当今的信息系统都离不开数据库,因此也离不开SQLoSQL注入攻击(SQLInjectionAttack)是攻击者应用http(HypertextTransferProtocol,,超文本传输协议)的请求向B/S模式的信息

3、系统发送恶意的SQL脚本,探测出信息系统开发者编程过程中的漏洞,然后利用这些漏洞,对信息系统的数据库内容进行直接检索或修改。许多信息系统由于开发者的疏忽,没有对用户输入数据的合法性进行严格判断,使应用程序存在漏洞,造成安全隐患,攻击者就是利用这些漏洞,达到攻击的目的。大家都知道,信息系统基本上都是靠数据库来支撑的,尽管现用的数据管理系统种类较多(如:Oracle,MSSQLServer,Sybase,DB2,MySQL,Access等),但是他们基本上都支持SQL,虽然针对各种数据库管理系统的S

4、QL语法不尽相同,但基本上是大同小异,易于区分和掌握,并且对于绝大多数防火墙来说,这种攻击是“合法”的,因此SQL注入攻击易于实施,具有广泛性。一旦攻击成功,信息系统所用数据库中的数据可以任由攻击者查看和修改,攻击者可以直接在数据库中添加具有管理员权限的用户,从而最终获得系统管理员权限,其危害是极其严重的:如果信息系统中存放有秘密数据,则造成秘密泄露;如果攻击者修改数据库中的数据,要么造成系统的瘫痪,要么使系统中的数据以假乱真,误导系统的使用者做出错误的决策,从而造成更大的危害。当今的数据库管理

5、系统都有一些工具和功能组件,可以直接与操作系统及网络联接。这就意味着攻击者通过SQL注入攻击一个信息系统后,其危害就不只局限于存储在数据库中的数据,攻击者还可以设法获得对DBMS(数据库管理系统)所在的主机的交互式访问,使其危害从数据库向操作系统、甚至整个网络蔓延。因此,我们不仅应当将SQL注入攻击看作是一个对存储在数据库上数据的威胁,而且应当看作是对整个网络的威胁。”值得注意的是,专门进行SQL注入攻击的黑客工具现早就出现了,利用这些黑客工具来进行攻击可能只需要几分钟时间就能成功,攻击者可能轻

6、易获得数据库和信息系统的管理权限,甚至获得整个服务器的管理权限,其危害程度是可想而知的。3信息系统开发与部署中的安全防范设计要有效防范SQL注入攻击,需要同时采取多种措施,可从应用系统编程防范、安全配置数据库管理系统、安全配置操作系统等方面进行。3.1编程防范编程防范就是在编写的程序中加强安全防范,堵塞漏洞。编程防范总的原则是少特权、多检验。少特权就是不要给数据库连接或数据库用户太多的权限,应为不同的类型的操作建立和使用不同的账户,其权限与其操作相匹配,不要给它授予多余的权限。有些编程者为了方便

7、,直接使用超级用户的连接数据库,这样就给系统带来了很大的安全隐患,一旦攻击者攻击成功,系统就会任其摆布,危害极大。编程中应尽量多采用存储过程,如果一定要使用SQL语句,那么用标准的方式组建SQL语句,比如可以利用parameters对象,避免用字符串直接拼写SQL命令。多检验就是对用户输入从多方面检验其合法性,如检验数据中是否包含单引号、双引号、分号、逗号、冒号、连接号等特殊字符或SQL语句、函数、数据类型等保留字符串,数据类型是否与预期类型匹配,数据长度是否超长等,一旦发现与预期不符的情况,应

8、放弃执行。检验用户输入数据的其合法性,应在客户端和服务端都进行,两端的检验函数大体相同,在客户端检查没有通过就不提交到服务器端执行,这样可以降低服务器负荷,减少网络流量。当然,攻击者可以绕过客户端检验,直接将攻击代码提交到服务器端,因此,服务器端的检验更为重要。此外还要注意,当SQL语句执行出错时,不要直接将数据库返回的错误信息显示给用户,因为数据库返回的错误信息往往会透露一些数据库设计的细节(如:表名、字段名等),攻击者往往故意设计一些使数据库报错的SQL语句来了解数据库的设计细节,达到进一步

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。