站长中国
设为首页 | 站长论坛

站长论坛 站长下载
您所在的位置: 站长中国 > 站长学院 > 数 据 库 > 其他相关 > 正文

不当编写SQL语句导致系统不安全
  2007年10月22日02:44:05  评论(0条) 字体:[ ]
相关热点:

  在一般的多用户应用系统中,只有拥有正确的用户名和密码的用户才能进入该系统。我们通常需要编写用户登录窗口来控制用户使用该系统,这里以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、将用户验证和密码验证分开来做,先进行用户验证,如果用户存在,再进行密码验证,这样一来也能解决问题。


收藏本文 打印 打印本文  推荐本文 告诉好友 投稿 投稿邮箱

站长排行

学院

新闻

专栏

盈利

[揭密网络黄链]中国留学生买凶专破日本
windows 2008中文版iis7+asp+php+Acces
贴吧发帖机使用教程(绝对原创)
超强弹出窗口代码,什么都挡不住
Windows Vista局域网网络连接设置
JSP语法(6)
FLASH视觉特效实例之地震效果
关于数据分页(转自www.codeproject.co
教你如何在Vista中设置麦克风
不用Photoshop 在线恶搞大头像
全国哀悼日网友自发QQ隐身上线 向死难
淘宝网卖家公然叫卖“艳照门”照片集
抗震救灾/鱼目混珠?
Google绿色专家质疑黑色背景网页节省资
阿里妈妈广告卖主全攻略
电影小说类相关关键字搜索量列表
爆笑 阿里就这样把亿告征服!
大脚:实战单页面优化关键词之——淘宝
国内各IT企业办公环境揭秘(多图)
心系灾区,点燃希望——手机QQ2008祈福
ECSHOP模板制作参考文档
悬挂阿里妈妈会否被百度惩罚
ECSHOP模板下载
阿里妈妈是否是中小站长的救世主?
最强网店ECShop发新版 众多酷炫功能给
土豆网,优酷网,爆米花等视频网站采集
DedeCms模板安装/制作概述
网上商店系统巅峰对决 ECShop vs ShopE
编程中国全站采集规则
http://www.mt86.com全站采集规则
性福联盟 一个不尊重站长的联盟
百度网络广告利润增长将会持续多久
大脚:日赚100元—揭露最新firefox欺骗
分享经验:个人网站如何月赚1万!
大脚:垃圾站超级赚钱法之二—突破“站
迅雷联盟、快车联盟收入对比
大脚:垃圾站超级赚钱法之——前言
Google Adsense的秘密 第二版
风险投资公司vc联系方式名录大全(一)
经理人必看的十个管理网站
站长学院  网页设计 建站教程 图形图象 网络编程

制定完整的网站
制定完整的网站
中国企业网站的
中国企业网站的

网站运营之怎么样来粘住你的用
网麒:网站建设创意
怎样提高网页快照更新
两种方法,教你如何通过微软正
英文网站优化细节
利用SSL加密增强FTP服务器的安
网页设计常用Javascript经典代

新闻线索

如果你有站长界人事变动、重组并购、变革技术出现,以及产品投诉等重要新闻线索,请告诉我们,我们会给予特别关注。
0631-3653338
站长中国编辑部
站长中国24小时新闻热线: 13156089008