欢迎来到天天文库
浏览记录
ID:6073650
大小:29.50 KB
页数:7页
时间:2018-01-02
《基于sql注入web应用程序安全性探究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于SQL注入Web应用程序安全性探究 【摘要】SQL注入是对Web应用程序造成威胁非常流行的一种攻击方法,本文从SQL注入的原理技术进行分析,介绍如何从多个角度防止SQL注入,更好的维护Web应用程序的安全。【关键词】SQL注入;安全;研究OntheSecurityofWebApplicationsBasedonSQLInjectionLeiYan-rui(HainanCollegeofSoftwareTechnologyHainanQionghai571400)【Abstract】SQLinjectionisacommonformofattackthatposesthreatsag
2、ainstWebapplications.Inthispaper,weanalyzethetechnicalprinciplesofSQLinjection,andpresentseveralapproachestoavoidingtheattackandkeepingWebapplicationssafe.【Keywords】sqlinjection;security;research1引言7随着互联网的普及应用,Web应用系统广泛应用到各个领域。但由于Web应用系统的功能丰富、便于传播、通用性强等特点,导致它容易为网络黑客所攻击。1998年第一次有人发现SQL注入,此后研究人员开始注
3、意SQL注入的危险性,而且之后SQL注入进行攻击的事件愈演愈烈。近几年发生几起SQL注入比较有名的事件,2009年12月,黑客利用SQL注入漏洞攻击RockYou数据库获取用户密码信息;2010年9月,瑞典选民在选举阶段内通过SQL注入攻击选举;2011年,黑客利用SQL注入漏洞从诺基亚网站盗取用户信息;2012年,MMORPG游戏网站被黑客SQL注入攻击。越来越多利用SQL注入攻击非法获取经济利益,任何网站或应用中的一个SQL注入漏洞都很有可能受到黑客的攻击。2SQL注入技术分析SQL是访问数据库服务器的标准语言,几乎所有的Web应用都需要与数据库打交道,势必用到SQL语言。SQL的典
4、型操作“查询”可以获取数据库的“查询结果记录集”,并且SQL语句可以对数据库的结构或数据进行操作和修改,如果攻击者利用SQL语句进入Web应用程序的数据查询,SQL注入攻击就有可能发生。当Web应用程序的开发人员对cookie或用户输入的参数等数据不进行过滤或验证就直接传递值给SQL查询语句时,SQL注入漏洞就开始存在了。(1)SQL注入漏洞原因7一条典型的SQL语句:statement:=“SELECT*FROMusersWHEREname=‘“+uName+“‘;”这段代码的目的是将某个特定用户从用户表中取出,但如果用户名被恶意用户用特定方式伪造,这条语句的执行操作就完全违反了作者的
5、期望。比如,将用户名这个变量(uName)输入为:u’or‘a’=‘a’这样写的目的是,name=‘uName’的要求就变成了name=‘u’?or?’a’=‘a’,单引号刚好闭合,此时原始语句变为:SELECT*FROMusersWHEREname=‘u’or‘a’=‘a’;此代码被用于认证过程的话,如上输入能够强迫选择合法的用户名,因为赋值‘a’=‘a’永远为真。如此的SQL注入除了可以获取正确的用户通过外,还可以利用这一点删除表、或者获取表中所有的数据等。(2)SQL注入的危害7攻击者可以利用SQL注入任意增、删、改或查数据库中的数据,获取数据库中存放的个人密码、消费记录等敏感信息
6、;可以通过这种方法获得管理员的权限操作数据库;如果攻击者利用SQI注入执行一些系统的命令的话,他们可以获得整个系统的控制权,后果可想而知。3SQL注入的安全防范(1)参数化方法参数化方法是指在数据提交的地方不直接进行赋值,而利用参数来进行值传递。使用参数化方法,在DBMS对SQL语句完成编译后,才载入参数运行语句。即便参数的传递中含有指令,也不会被运行。使用参数化查询技术,数据库服务器不会将参数的内容视为SQL指令的一个组成部分来处理,在数据库系统完成对SQL指令的编译后,再载入参数运行.因此,即使参数中含有指令,也不会被DBMS编译运行。示例1:……sql.CommandText=“s
7、elect*fromuserswhereuname=?andpword=?”;//构造SQL语句,根据的用户名和密码在用户表中查找记录sql.Parameters.Append(cmd.CreateParameter(”@uname”,200,1,20,“abc”));sql.Parameters.Append(cmd.CreateParameter(”@pword”,200,1,16,“bcd”));……rs.Close();7c
此文档下载收益归作者所有