APP下载

关于网站建设中Access数据库安全问题

2014-02-22郭敏

关键词:网站建设

郭敏

[摘要]在ASP(Active Server Pages)作为一种典型的服务器端网页设计技术,被广泛地应用在网上银行、电子商务、搜索引擎等各种互联网应用中,同时Access数据库作为微软推出的以标准JET为引擎的桌面型数据库系统,由于具有操作简单、界面友好等特点,具有较大的用户群体。但ASP+Access解决方案在为我们带来便捷的同时,由于数据库中数据大量集中存放,并且为众多用户直接共享,所以数据库的安全问题就尤为突出。

[关键词]网站建设 数据库安全 Access

随着Internet的发展,Web技术日新月异,ASP(Active Server Pages)作为一种典型的服务器端网页设计技术,被广泛地应用在网上银行、电子商务、搜索引擎等各种互联网应用中。同时Access数据库作为微软推出的以标准JET为引擎的桌面型数据库系统,由于具有操作简单、界面友好等特点,具有较大的用户群体。因此ASP+Access成为许多中小型网上应用系统的首先方案。但ASP+Access解决方案在为我们带来便捷的同时,由于数据库数据中数据大量集中存放,并且为众多用户直接共享,所以数据库的安全问题就尤为突出。

一、ASP+Access的安全隐患

ASP+Access解决方案的主要安全隐患来自Access数据库的安全性,其次在于ASP网页设计过程中的安全漏洞。

1.Access数据库的存储隐患

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

例如:对于网上书店的Access数据库,人们一般命名为book.mdb、store.mdb等,而存储的路径一般为“URL/database”或干脆放在根目录(“URL/”)下。这样,只要在浏览器地址栏中敲入地址:“URL/ database/store.mdb”,就可以轻易地把stroe.mdb下载到本地的机器中。

2.Access数据库的解密隐患

由于Access数据库的加密机制非常简单,所以即使数据库设置了密码,解密也很容易。该数据库系统通过将用户输入的密码与某一固定密钥进行异或来形成一个加密串,并将其存储在*.mdb文件中从地址“&H42;” 开始的区域内。由于异或操作的特点是“经过两次异或就恢复原值”,因此,用这一密钥与*.mdb文件 的加密串进行第二次异或操作,就可以轻松地得到Access数据库的密码。基于这种原理,可以很容易地编制出解密程序。

由此可见,无论是否设置了数据库密码,只要数据库被下载,其信息就没有任何安全性可言了。

3.源代码的安全隐患

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

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

ASP代码利用表单(from)实现与用户交互的功能,而相应的内容会反映在浏览器的地址栏中,如果不采用适当的安全措施,只要记下这些内容,就可绕过验证直接进入某一页面。

使如在浏览器中敲入“……Papg.asp?x=2”,即可不经过表单页面直接进入满足“X=2”条件的页面。因此,在设计验证或注册页面时,必须采取特殊措施来避免此类问题的发生。

二、提高数据库安全性的方法

由于Access数据库加密机制过于简单,困此,如何有效地防止Access数据库被下载,就成了提高ASP+Access解决方案安全性的重中之重。

1.非常规命名法

防止数据库被找到的简便方法是为Access数据库文件起一个复杂的非常规名字,并把它存放在多层目录下。

例如,对于网上书店的数据库文件,不要简单地命名为“book.mdb”或“store.mdb”,而是要起一个非常规的名字,例如faq19jhsvzbal.mdb,再把它放在如./akkjj16t/kjhgb661/acd/avccx55之类的深层目录下。这样,对于一些通过猜的方式得到Access数据库文件名的非法访问方法起到了有效的阻止作用。

2.数据库加密

首先在选取“工具→安全→加密/解密数据库”,选取数据库(如:data.mdb),然后按确定,接着会出现“数据库加密后另存为”的窗口,存为:datal.mdb。接着data.mdb就会被编码,然后存为datal.mdb。要注意的是,以上的动作并不是对数据库设置密码,而只是对数据库文件加以编码,目的是为了防止他人使用别的工具来查看数据库文件的内容。

接下来我们为数据库加密,首先以打开经过编码了的datal.mdb,在打开时,选择“独占”方式。然后选取功能表的“工具→安全→设置数据库密码”,接着输入密码即可。这样即使他人得到了employerl.mdb文件,没有密码他是无法看到data1.mdb的。

加密后要修改数据库连接页,如:

conn.open “driver={mi-crosoft access driver(*.mdb)};

uid=admin;pwd=数据库密码;dbq=数据库路径”

这样修改后,数据库即使被人下载了,别人也无法打开(前提是你的数据库连接页中的密码没有被泄露)。但如前所述,由于数据库加密机制比较简单,只要数据库被下载,其信息安全依然是个未知数。

3.使用ODBC 数据源

在ASP程序设计中,应尽量使用ODBC数据源,不要把数据库名直接写在程序中,否则,数据库将随ASP源代码的失密而一同失密。例如:

DBPath=Server.MapPath(“./akkjj16t/kjhg661/acd/avccx55/faq19jhsvzbal.mdb”)

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

&DBPath;

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

Conn.open “ODBC—DSN名”这种方法的不足之处是如果移动站点目录的话,需要重新设置数据源。

4.在数据库名称里加#号

在数据库名前加上一个#号,台:#Data.Asp。这里的#号并不是用来防止下载的。当你有多个MDB文件,并放在同一个目录下,如果访问者猜到管理员MDB文件的位置,并且从另一个系统中得到SQL注入漏洞的同时,就可以采用Access跨库查询的方法,来取得管理员库中的记录。如果我们在库名前面加上#号的时候,就算被猜测到了也没有关系,因为#在SQL语法中有表示日期的作用,语法出错也就不会去执行查询条件了。

需要注意的是:只要数据库文件名任何地方含有#号,别人都无法正常下载。同理,空格号也可以起到#号作用,但必须是文件名中间出现空格。

5.更改数据库文件名并在数据库中加入ASP代码字段

这种作法是比较专业但也是很安全的也是现在比较流行的方法,其正确作法他为两步:

第一步,在你的MDB文件中建一个表,如NotDownLoad在表中建一个字段,类型为OLE对象,字段名为:<%abcd%>,为什么要取名为<%abcd%>,其实在这里可以随便输入,只要不是正确有ASP语句就行了。

第二步,数据库改为“文件名.Asp”。

这样把扩展名改成.ASP后,在IE中输入的时候,遇到了<%>他就会去解释之间的代码,而不正确的ASP语句在解释时会出现乱码,所以数据库就不会正确有被下载。

综上所述,比较安全的数据库就应该是#文件名.Asp,并且建一个临时表,表中有一字段输入ASP代码,让ASP不能被正确的解释。

注意:上述防止数据库被下载的方法主要针对虚拟服务器而言。对于托管主机,那就比较简单了,直接把数据库放在IIS以外的目录即可防止被下载。例如:WEB目录在D:\Web\WebSite目录下,那么就把数据库保存在D:\Web\Data目录下。

(作者单位:十堰职业技术(集团)学校 湖北十堰)

猜你喜欢

网站建设
哈尔滨市政府网站建设现状及发展对策
网站建设课堂教学改革及考核思路
农业慕课培训网站建设研究及实例分析
基于“三创”能力培养的《网站建设》实训课程改革与实践
互联网视角下中医药文化传播网站的建设与思考
网站建设和网页制作的方法
基于ASP技术的实验室网站系统建设
网络视域下初中作文教学初探
建设高校教育教学资源网站的方法探讨
浅析站群系统在高校网站建设中的实现与应用