2024年6月20日发(作者:)
第33卷第4期
2011年12月
集宁师专学报
Vbl-33,No.4
Journal ofJiningTeachers College
Dec.201 l
动态网站的ASP漏洞
李同梅 ,孟繁珍
(1.集宁师范学院计算机系, 内蒙古乌兰察布012000;
2.中国联合网络通信有限公司乌兰察布分公司)
摘要:ASP的漏洞有的是程序自身的缺陷,也有一部分是由于ASP调试服务器的漏洞所造成
的。针对不同的漏洞,可以采用不同的方法修补,本文重点讨论引号漏洞和AccesS数据库下栽
漏洞这两个方面的问题,提高数据库的安全性.
关键词:ASP漏洞; 密码验证;SQL语句:Access数据库
中图分类号:TN915.08 文献识别码:A 文章编号:1009—7171(2011)04-0045—03
网站的安全性一直是一个很重要的问题。对于一个小型的个人网站,如果没有什么重
要信息,也不担心信息泄漏,对网站安全就没有很高的要求,则采用Windows+lIS的默认
安全策略就可以解决问题;但是对于重要的商业网站,有很多商业机密,网站源码就需要
被保护,这时,提高网站的安全性能成了头等大事。本文针对asp漏洞,来探讨如何设置
ASP网站的安全性。
1密码验证漏洞形成探析
常用站点在用户管理中都将注册用户的用户名和用户密码,放到网络数据库的有关表
中,在出现登录窗口的登录程序中,使用下面的SQL语句来实现查询数据库以核对用户所
填写的数据。如下:
<%
userxm=Request( xm ) ’获取用户姓名
password=Request( 唧 ) ’获取用户密码
Set Rs=Server.CreateObject( ADODB.RECORDSET )
Sql 1= Select木From admin where zd userxm=’ &userxm& ’and zd password=’ &
password
Rs.Open Sql1,Conn,1,1
If Not rs.eof Then
session( userxm )=userxm
response.Redirect( admin.asp )
%>
该代码常常被用在检验系统合法用户的页面,登录页面利用session变量
session("userxm )=userxm将用户名和密码传递到这个页面,再利用SQL语句在数据库中
进行查找是否有该用户名和密码,如果找到就结束该页面,否则用语句
response.Redirect( admin.asp )重新转到登录页面。
在实际应用中,往往将用于判断合法用户的页面包含在其它页面中,若该页面名为
admin.asp,则只要在其它页面的开始部分加入<!--#include file=”admin.asp”一!>即
可。若不是合法用户,则转到登录页面:否则结束该页面,执行本页面的其它内容。
数据库中存储的用户名和密码都是字符串型数据,在查询数据库过程中,常常使用单
引号把要查询的数值括起来,其实这样的代码很容易被访问者用一些方法获得并利用。
在这种情况下,非法访问者只需要使用这样的一个特殊密码:WOWO’or’1’=1,就
收稿日期:2011-5.24
作者简介:李同梅(1970.),女,汉族,内蒙凉城人,副教授,学士,研究方向:计算机教育
集宁师专学报 第33卷
可以很容易通过数据库的验证并登录到数据库中,为什么会出现这样的情况呢?下面,我
们分析一下这类密码在程序使用过程中最后生成的SQL查询语句。
Sql Select:I:From admin where zd
—
username ’ &userxm& ’and zd
password=
_
’
WOWO’or’1’=’1’
’1’=’l’永远为true(真),由于or(或)的作用,上面的SQL查询不管在数据库中是否能
查到userxm和密码为WOWO的用户,zd—username=~&userxm& and zd password=
WOWO’or’1,=’l,的返回值永远是true(真),那么查询所返回的记录集中总是包含有用
户数据库中的记录,换句话说,rs.eof永远为false,就是说记录指针永远不会指到文件的
末尾。最终反映到程序中的查找效果与合法的用户正确操作完全相同,这样,访问者就可
’
以很轻松地进入到本来没有权限的程序页面中。
当然,非法访问者也可以使用一个特殊的登录用户名,如WOWO’or’l’=’l也可以
进入本来他没有权限查看的一个程序页面。使用这样的登录用户名,最后生成的SQL代码
为:
Sql 1= Select木From admin where zd
_
password
=’ &
password
& ’
and zd username
’
=
WOWO’or’1’:’1’
这种情况同构造特殊密码一样,由于使用逻辑运算符or(或)的作用,所以查询数据
库文件的操作过程,是因为’l’=’1’永远为true(真),使得这个表达式zd
password=~&
—
password& and zd
—
username=’WOWO’or’l’:’1’永远为真,导致程序的运行并不进
行正确的用户登录名和用户密码的比较,而直接得到一个含有网页数据库中所有记录的记
录集。这样,非法访问者也绕过了正确用户登录名和用户密码验证的步骤,而进入到本来
没有使用权限查看的程序页面。
2密码验证漏洞安全处理
解决这种类型漏洞的方法是:修改单引号在SQL中的使用。
对程序中SQL语句中的单引号进行修改,我们可以使用下面的函数巧妙地进行一下转
换,如:
Function sql 1(数据)
Sql1= &Replace(数据, , ~) ~
End Function
把在程序SQL中可能存在使用单引号的数据换成双单引号连用的形式,即两个双引号,
这样就可以避免了程序中因单引号的前后匹配造成的访问者绕过用户登录名和用户密码验
证的漏洞。下面的代码是用函数替换单引号的方法。
<%
Sql I= select木from admin where userxm=
Sq11=sql1&sql1(userxm)
%>
这样即便访问者使用了类似WOWO’or userxm<>’WOWO这样的用户登录名或者用户密
码,那么经过sql函数的运算,其结果也应该是:
select士from admin where userxm=’WO”or userxm<>’’WOWO’
通过这样的替换运算,结果就不会产生因为or(或)运算符导致程序中SQL判断永
远为true(真)的情况。
3 Access数据库被下载漏洞原因及策略
ASP结合后台Access数据库开发应用系统在一些小型网站中得到了广泛应用。这种方
式存在着很大的安全隐患,如果访问者知道了数据库的文件名,整个数据库就存在完全被
下载的可能。数据库文件中常常存放着一个网站的全部数据,如果数据被人下载了,那么
网站就会造成很大的损失。比如:Access数据库存放在服务器:\new\data\db目录下,若
使用者知道该数据库文件存放的路径和文件名,可直接在浏览器的地址栏中输入该路径及
第4期 李同梅,孟繁珍:动态网站的ASP漏洞 47
文件名:http://www.fuwu/new/data/db/user.mdb存放在服务器中的user.mdb数据库文
件被下载到本地计算机中。如果该数据库没有加密安全措施,对一个应用系统来说,这就
十分危险。比如,该数据库中存放了大量的客户信息。访问者完全可以利用别人的信息登
录来进行一些非法操作,那么整个网站将有可能因此而陷入危险境地。
造成这种数据库危险的主要原因是知道了数据库文件路径和文件名,许多非法访问者
往往根据网站或系统的主题对数据文件进行一定的猜测。因此,如果将数据文件存于一个
不太有实际意义的目录中,或将数据文件名命名成不太规律的文件名,可大大提高系统在
这方面的安全性。解决这个漏洞的方法是使用不规则的数据库名字和路径。
首先,为你的数据库文件命名一个复杂的没有规律的文件名,比如数据库文件名:
ylonhu1.mdb,这样的文件名很难被人猜出来。
其次,把数据库文件存放到多级目录之下,目录名称也尽量不要太规律。比如:把文
件放到\ddaa8\iop76\ss5y\ylonhu1.mdb,这样访问者要想通过猜测获得数据库文件名和
文件路径就变得非常困难。
然后,不要把数据库文件名放在ASP程序中,好多编程者习惯把DSN写到ASP程序里,
比如下面的文件代码:
Set Conn=Server.CreateObject( ADODB.CONNECTION )
ConnStr= Provider=Microsoft.Jet.OLEDB.4.0:Data Source= &Server.MapPath
(book.mdb)
通过上面的源码文件我们可以得知,网站中数据库的文件名是book.mdb,文件路径可
以通过Server.MapPath获取,所以,如果是安全性较高的应用系统,一定要在ODBC数据
源中事先设置好DSN,然后在ASP程序中直接调用这个DSN。
最后,利用Access系统本身的数据库编码及加密功能,来加强数据库文件的安全性。
通过上述分析我们知道,ASP漏洞有的是程序自身的缺陷,也有一部分是由于ASP调
试服务器的漏洞所造成的。虽然Microsoft也在努力修补这些漏洞,但总不能做到十全十
美,如果存储重要信息的网站后台的数据库位置可以被发现并下载,这样入侵者就可以通
过数据库中的内容进行破坏活动,从而造成很严重的后果。所以作为一个程序员一定要认
真细心,争取修补网站中的所有的漏洞。
参考文献:
【l】赵增敏.ASP动态网页设计D .北京:电子工业出版社,2009.8.
【2】陈永强.ASP数据库开发经典实例精解【M】.北京:机械工业出版社,2006.1.
【3】韩殿元.ASP动态网站开发技术与应用【M】.南京.南京大学出版社,2007.4.
ASP dynamic website vulnerability
Li Tong-meil,Meng Fan.zhen2
(1.Department ofComputer Science,Jining Teachers College,Inner Mongolia wulanchabu 012000;
(2.Wulanchabu branch of china unicorn)
Abstract:ASP vulnerability in some program its own shortcomings,but also partly due to ASP
debugging server vulnerability caused.For different vulnerabilities,patches can be used in
different ways,this article focuses on vulnerabilities and Access database download quotes these
two aspects of vulnerability and thus help improve the security of the database.
Key words:ASP vulnerability;password verify;SQL statement;Access the database
发布者:admin,转转请注明出处:http://www.yc00.com/news/1718884613a2753264.html
评论列表(0条)