搜狐、163、雅虎等都是众网民经常光顾的大型门户网站,这些网站提供的搜索引擎服务最受大家的青睐。可是恰恰是这些搜索引擎为黑客大开方便之门,许多黑客可以利用搜索引擎很容易地得到一个网站的数据库,从而得到网站的管理账号和密码,并可以控制到整个网站的管理权。这样一来,一些保存在数据库里只有管理员才能看到的机密文件就被泄露出来。
其实通过搜索引擎入侵网站过程十分简单,了解了入侵的方法,也就可以知道如何解决问题。那么防范的具体方法到底是怎么样的呢?
首先从入侵者角度着手,分析一段代码:
〈%connstr=“DBQ=“+server.mappath(“data/data.mdb”)+”;DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};”
set conn=server.createobject(“ADODB.CONNECTION”)
conn.open connstr %〉
以上是一段ASP的调用数据库的代码,其中“+server.mappath(“data/data.mdb”)+”起到设定数据库位置的作用。从中不难看出这个网站的数据库在dada目录中的data.mdb文件中。
很多大型网站的搜索引擎中,有一个强大的功能,就是可以搜索未在本搜索引擎注册过的网页。利用这个功能,让我们来搜索“server.mappath”这个字段。结果得到的结果是:
[无标题文档]
……=“+server.mappath(“../up/mucal/calp.mdb”)+”;DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};”
set conn=……
-(网址:略)
这样,用户就会得到很多带有数据库位置信息的搜索结果。但结果中会存在一些水分,而且范围太大。如果用户只想得到某一个网站的代码该怎么办呢?其实这个也很简单,搜索引擎通常带有多关键词查询功能,只要在所要搜索的两个关键词中间输入一个“+”就可以了。比如用户要查找有关于计算机世界网站中关于网络安全的所有网页,只要用户在搜索引擎中键入“计算机世界+网络安全”即可。同样,用户可以用这个方法来解决上面的那个问题。如果用户要得到某一个程序的数据库,比如这个程序的名字是《小牛江湖》,那么用户在搜索引擎中搜索“小牛江湖+ server.mappath”就可以得到下面的结果:
[小牛江湖]
……=“+server.mappath(“../xajh/data/mycalf.mdb”)+;DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};”
set conn=……
-(网址:www.mycalf.com/xajh/index.asp)
此时,这个程序的数据库位置便一目了然:/xajh/data/mycalf.mdb。接下来用户把这个数据库下载下来,用相应的数据库软件打开,就可以得到其中的内容。利用这个漏洞还可以得到mssql server的口令,甚至可以进一步的去管理对方的整个服务器。
天下有矛就该有盾。这个被别人利用搜索引擎得到网站数据库的问题可以用许多方法化解,最有效的方法之一就是隐藏这段语句,利用调用其他文件的方法来实现调用数据库。
首先需要建立一个内容为〈% connstr=“DBQ=“+server.mappath(“data/data.mdb”)+”;DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};”
set conn=server.createobject(“ADODB.CONNECTION”)
conn.open connstr %>的ASP文件。比如把这个文件命名为dbconn.asp。这样只要在需要调用数据库的ASP文件中加入!--#include file=“dbconn.asp”-->就可以实现数据库的调用。如此,便实现了调用语段的隐藏,解决了被他人利用搜索引擎得到网站数据库的问题。