天津网站建设 天津网站制作 天津网页设计 天津网站设计 天津网页制作

  1.全动态网站,全部后台管理,完全独立设计,并有大量不同风格案例参考! 一年的免费技术支持,免去您的后顾之忧. 第二年起只需交纳域名费(100元)和空间费(550元) 主要功能包括:关于我们,新闻中心,产品中心,服务内容,人才招聘,联系方式,留言反馈,在线统计系统
案例精选:<案例一> <案例二> <案例三> <案例四> <案例五> <案例六> <案例七> <案例八>
<案例九> <案例十> <案例十一> <案例十二> <案例十三> <案例十四> <案例十五>   <更多>




 5月份网站建设优惠套餐
 标准网站售后服务和维护体系
 企业网站建设优惠套餐价格表
 网站.域名.空间等服务转出问题必读
 企业网站建设及基本流程
 域名、空间、企业邮局价格表
 Sql Server服务器及价格表
 网站及Flash动画制作标准价格表
 公司服务器和IDC机房介绍
 关于网站和软件开发所使用的语言

 
 
 
天津软件外包专区 | News
首页→天津软件外包专区
不正确编写SQL语句会导致系统不安全
发布人:管理员  点击数:5408
在一般的多用户应用系统中,只有拥有正确的用户名和密码的用户才能进入该系统。我们通常需要编写用户登录窗口来控制用户使用该系统,这里以Visual Basic ADO为例:

一、漏洞的产生

用于登录的表:

Users(name,pwd)

建立一个窗体Frmlogin,其上有两个文本框Text1,Text2和两个命令按钮cmdok,cmdexit。两个文本框分别用于让用户输入用户名和密码,两个命令按钮用于“登录”和“退出”。

1、定义Ado Connection对象和ADO RecordSet对象:

Option Explicit

Dim Adocon As ADODB.Connection

Dim Adors As ADODB.Recordset

2、在Form_Load中进行数据库连接:

Set Adocon = New ADODB.Connection

Adocon.CursorLocation = adUseClient

adocon.Open "Provider=Microsoft.jet.
OLeDB.4.0.1; Data Source=" && _

App.Path && " est.mdb; "

cmdok中的代码

Dim sqlstr As String

sqlstr = "select * from
usersswheresname='" && Text1.Text && _

"' and pwd='" && Text2.Text && "'"

Set adors = New ADODB.Recordset

Set Adors=Adocon.Execute(sqlstr)

if Adors.Recordcount>0 Then
//或If Not Adors.EOF then

....

MsgBox "Pass" //通过验证

Else

...

MsgBox "Fail" //未通过验证

End if

运行该程序,看起来这样做没有什么问题,但是当在Text1中输入任意字符串(如123),在Text2中输入a' or 'a'='a时,我们来看sqlstr此时的值:

select * from usersswheresname='123'
and pwd='a' or 'a'='a'

执行这样一个SQL语句,由于or之后的'a'='a'为真值,只要users表中有记录,则它的返回的eof值一定为False,这样就轻易地绕过了系统对于用户和密码的验证。

这样的问题将会出现在所有使用
select * from usersswheresname='"
&& name && "' and pwd='" && password &&"'
的各种系统中,无论你是使用那种编程语言。

二、漏洞的特点

在网络上,以上问题尤其明显,笔者在许多网站中都发现能使用这种方式进入需要进行用户名和密码验证的系统。这样的一个SQL漏洞具有如下的特点:

1、与编程语言或技术无关

无论是使用VB、Delphi还是ASP、JSP。

2、隐蔽性

现有的系统中有相当一部分存在着这个漏洞,而且不易觉察。

3、危害性

不需要进行用户名或密码的猜测即可轻易进入系统。

三、解决漏洞的方法

1、控制密码中不能出现空格。

2、对密码采用加密方式。

这里要提及一点,加密不能采用过于简单的算法,因为过于简单的算法会让人能够构造出形如a' or 'a'='a的密文,从而进入系统。

3、将用户验证和密码验证分开来做,先进行用户验证,如果用户存在,再进行密码验证,这样一来也能解决问题。
 
 
友情链接:
易想会员  天津网页设计公司  华易动力网络公司  天津网站制作   
 
  免费服务热线:400-0022-823  联系电话:18622734798 传真: 022-28261501 转 608
客户服务邮箱:service@nfree.cn,手机直线:15822335163 QQ:1724312521业务咨询
天津市华易动力信息科技有限公司 版权所有 邮编:300202  

津公网安备 12010302001042号


地址:天津市河西区围堤道146号华盛广场B座22楼 主营业务:天津网站建设 天津网站制作 天津网页制作 天津网页设计 天津网站设计