APP下载

浅析网站数据库的安全防范及对策

2009-03-25黄荣生

商情 2009年11期
关键词:数据库安全

黄荣生

【摘 要】本文通过对ASP+Access网站中Access数据库存在的主要安全问题进行分析研究,并从Access数据库安全性和ASP页面安全性等方面提出相应的安全防范对策。

【关键词】ASP Access 数据库 安全 ODBC数据源

笔者从事电子商务网站建设课程教学工作多年,一直选用ASP+Access方案构建方案。但ASP+Access方案最大的安全隐患在于Access数据库可以被攻击者非法下载,而现在互联网上提供的很多ASP空间都是只支持Access数据库。这样一来,防止Access数据库被非法下载就显得非常重要了。本文笔者通过分析研究将告诉大家如何打造mdb数据库文件的安全防范对策。

一、危机起因

(一)Access数据库的安全问题

1.Access数据库的存储隐患

在ASP+Access应用系统中,如果获得或者猜测到Access数据库的存储路径和数据库名,则该数据库就可以被下载到本地。

2.Access数据库的解密隐患

由于Access数据库的加密机制非常简单,所以即使数据库设置了密码,解密也很容易。该数据库系统通过将用户输入的密码与某一固定密钥进行异或来形成一个加密串,并将其存储在*.mdb文件中从地址“&H42”开始的区域内。由于异或操作的特点是“经过两次异或就恢复原值”,因此,用这一密钥与*.mdb文件中的加密串进行第二次异或操作,就可以轻松地得到Access数据库的密码。基于这种原理,很容易编制出解密程序或者在互联网上下载到破解工具,数据库文件的内容,企业的资料、隐私和员工的密码从此不在安全。由此可见,无论是否设置了数据库密码,只要数据库被下载,其信息就没有任何安全性可言了。

(二)ASP带来的安全问题

1.ASP程序源代码的隐患

由于ASP程序采用的是非编译性语言,这大大降低了程序源代码的安全性。任何人只要进入站点,就可以获得源代码,从而造成ASP应用程序源代码的泄露。

2.程序设计中的安全隐患

ASP代码利用表单(form)实现与用户交互的功能,而相应的内容会反映在浏览器的地址栏中,如果不采用适当的安全措施,只要记下这些内容,就可以绕过验证直接进入某一页面。例如在浏览器中敲入“page.asp?x=1”,即可不经过表单页面直接进入满足“x=1”条件的页面。因此,在设计验证或注册页面时,必须采取特殊措施来避免此类问题的发生。

二、防范对策

我们可以采用迷惑法、隐藏法、加密法、ODBC数据源法和注册验证法等技术手段防止数据库文件被非法下载。

(一)非常规命名法

1.把数据库的主文件名进行修改,并且放到很深的目录下面

防止数据库被找到的简便方法是为Access数据库文件起一个复杂的非常规名字,并把它存放在多层目录下。例如,对于网上花店的数据库文件,不要简单地命名为“flower.mdb”或“bloom.mdb”,而是要起个非常规的名字,例如:halower123.mdb,再把它放在如/wh123/wd123d/hoo9/dh123/abc之类的深层目录下。这样攻击者想简单地猜测数据库的位置就很困难了。

2.把mdb扩展名修改为ASP或ASA等不影响数据查询的名字

但是有时候修改为ASP或者ASA以后仍然可以被下载,如将mdb修改为ASP以后,直接在IE的地址栏里输入网络地址,虽然没有提示下载但是却在浏览器里出现了一大片乱码。如果使用FlashGet等专业的下载工具就可以直接把数据库文件下载下来,因此需要找到一种FlashGet无法下载的方法。根据网站在处理包含unicode码的链接的时候将会不予处理的原理。可以利用unicode编码(比如可以利用“%3C”代替“<”等),来达到目的。而FlashGet在处理包含unicode码的链接的时候却“自作聪明”地把unicode编码做了对应的处理,比如自动把“%29”的unicode编码字符转化成“(”。即是说如向FlashGet提交一个http://22.0.1.2/dat/%29amitx.mdb的下载链接,它却解释成了http://22.0.1.2/dat/(amitx.mdb,当单击“确定”按钮进行下载的时候,FlashGet就去寻找一个名为“(amitx.mdb”的文件,当然找不到。

(二)使用ODBC数据源

在ASP程序设计中,应尽量使用ODBC数据源,不要把数据库名直接写在程序中。例如:直接语句

DBPath=ServerMapPath(“/wh123/wd123d/hoo9/dh123/abc/halower123.mdb”)

ODBC数据源语句

Conn Open“driver={Microsoft Access Driver (*.mdb)};dbq=”& DBPath

可见,即使数据库名字起得再怪异,隐藏的目录再深,ASP源代码失密后,数据库也很容易被下载下来。如果使用ODBC数据源,就不会存在这样的问题了。

(三)加密ASP页面

可以使用微软公司的免费软件Script Encoder对ASP页面进行加密。它可以对当前目录中的所有的ASP文件进行加密,并把加密后的文件统一输出到相应的目录中。由于Script Encoder只加密在HTML页面中嵌入的ASP代码,其他部分仍保持不变,这就使得我们仍然可以使用FrontPage等常用网页编辑工具对HTML部分进行修改、完善,操作起来简单方便、效果良好。

(四)利用Session对象进行注册验证

为防止未经注册的用户绕过注册界面直接进入应用系统,可以采用Session对象进行注册验证。Session对象最大的优点是可以把某用户的信息保留下来,让后续的网页读取。一般情况,在设计网站时都要求用户注册成功后才可登录。但如果不采用Session对象进行注册验证,则用户在浏览器中敲入“URL/hrmis.asp?page=1”即可绕过注册界面,直接进入系统。利用Session对象可以有效阻止这一情况的发生。相关的程序代码如下:

<%

‘读取用户输入的账号和密码

UserID = Request(“UserID”)

Password = Request(“Password”)

‘检查UserID及Password是否正确(实际程序可能会比较复杂)

If UserID <>“hrmis” Or Password <>

“password” Then

Response.Write“账号错误!”

Response.End

End If

'将Session对象设置为通过验证状态

Session(“Passed”) = True

%>

进入应用程序后,首先进行验证:

<%

'如果未通过验证,返回Login状态If Not Session(“Passed”) Then

Response.Redirect“login.htm”

End If

%>

三、结束语

所谓魔高一尺,道高一丈:从网络安全技术本质上讲,就是“攻”与“防”的技术。要确保Access数据库文件不被非法下载,我们只有一方面要加强安全防范措施,防患于未然;另一方面也要经常对自己的网站进行安全测试,及时更新各种漏洞,让网站真正为企业提供安全高效的信息服务。

参考文献:

[1]周军.ASP网站系统安全技术研究.商洛学院学报,2007,(5).

[2]李东风,谢昕.数据库安全技术研究与应用.商洛学院学报,2008,(1).

[3]吴溥峰,张玉清.数据库安全综述.商洛学院学报,2006,(12).

猜你喜欢

数据库安全
数据库
数据库
数据库
数据库