ASP环境下的Access数据库安全

时间:2022-09-22 11:40:59

ASP环境下的Access数据库安全

摘要:作为开发中小型网上数据库应用系统的优秀开发方案之一,Asp+Access的开发模式也存在一些安全漏洞,文章分析了数据库的特点,并针对漏洞,提出了行之有效的解决方法。

关键词:Asp;Access;数据库;安全

中图法分类号:TP393.08文献标识码:A 文章编号:1009-3044(2008)11-20218-01

随着计算机的普及和计算机各方面技术的高速发展,计算机网络也更加深入地影响和改变着我们的生活。作为一种服务器端脚本编写环境,ASP(Active Server Pages)可以用来创建和运行动态网页或Web应用程序,被广泛应用于新闻、搜索引擎、电子商务等各种互联网应用中。而Access数据库作为Microsoft公司推出的以标准JET为引擎的桌面型数据库系统,由于具有操作简单、界面友好等特点,得到了广大计算机用户的推崇。因此Asp+Access成为许多中小型网上应用系统开发的最佳方案之一。但是由于Asp+Access技术本身的局限性,也为用户带来了一定的安全隐患。

由于Asp动态网页开发技术主要使用在动态网页的设计中,所以有很多的网络攻击者通过寻找它的漏洞,达到获取管理员权限,并进一步控制服务器、窃取信息的目的。在这里,我们就Asp+Access的网络系统本身存在的几个方面的漏洞以及解决方法做一些探讨。

1 Access数据库的安全问题

Access数据库的安全问题主要表现在:一是Access数据库如果存储不当,可能被攻击者完全下载;二是Access数据库自身的加密系统比较脆弱,容易被破解。

1.1 Access数据库的存储安全

在由Asp+Access构建的网络系统中,如果对方能得到系统中数据库的存储路径以及文件名,就能轻易地将数据库下载到本地打开,获取其中的信息。

在存储Access数据库的时候,应该将文件名设置得不规律、位数较长,,并将文件放置于网站的多级目录下,让攻击者无法轻易地获取路径和文件名,即使攻击者不断地猜解路径和文件名,也需要耗费大量的时间。这种情况下,管理员在日常管理中也很容易从大量的日志文件发现服务器遭受攻击。

在修改完文件名后,数据库仍然可能被猜解并被下载。为提高安全性,需要将数据库文件的后缀名改为.asp或.asa,这样修改后,数据库文件仍然可以正常地被应用程序使用,而且当数据库文件被浏览器执行的时候,也不会被直接下载,而是会在浏览器中显示出乱码,不容易被窃取内容。

虽然数据库的扩展名变成了.asp,但是当攻击者获取完整路径以后还是可以下载到数据库,对方可以等浏览器页面完全打开以后将这个数据库asp页“另存为”到本机上面,然后将后缀名改为.mdb就可以了。要解决这个问题,可以在数据库内添加一行错误的Asp代码,管理员可以先建立一个隐藏表,表内只有一列,在表中只插入错误的一句Asp代码,这样一来,对方打开数据库的页面时就只会出现Asp脚本的错误信息,而不会下载数据库了。

以上所有的措施并不能保证Access数据库的绝对安全,因为一旦ASP源代码被攻击者掌握,无论数据库名字位数多长,隐藏的目录多深,ASP源代码被破解后,数据库也会很容易被攻击者下载。但是如果在Asp程序中使用ODBC数据源,就不会出现这样的情况。在ASP程序设计中,应尽量使用ODBC数据源,不要把数据库名直接写在程序中,否则,数据库名将随ASP源代码的失密而一同被攻击者掌握。例如:

DBPath = Server.MapPath(“./database/mydb/fasgwetywe11.mdb ”)

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

那么,数据库的地址就暴露出来,攻击者就很容易下载到数据库了。

但是,如果管理员采用的是ODBC数据源,攻击者即使拿到了源代码:conn.open “ODBC-DSN名”,他也无法得到数据库的物理地址,从而也无法通过下载的方式获取数据库文件。

1.2 Access数据库的加密安全

Access数据库自身的加密机制比较简单,很容易被破解。Access数据库的文件头中42H-4EH为密码区,管理员在设置密码时,Access会根据所设密码的ASCII码与密码区的内容进行异或运算,最后将运算的结果存入密码区。

在Access数据库打开之后,数据库中的所有对象对用户都将是可用的。所以对于一些存储重要数据的Access数据库,管理员除了设置数据库密码外,还应该对数据库中的数据进行加密。

2 程序代码编写过程中的安全问题

2.1 利用Session对象进行注册验证

为防止未经注册的用户绕过注册界面直接进入应用系统,可以采用Session对象进行注册验证。Session对象最大的优点是可以把某用户的信息保留下来,让后续的网页读取。

2.2 对Asp页面进行加密

为了防止Asp程序的源代码被非法获取,可以采取对Asp脚本加密技术来保护源程序。现在有两种常用的方法对Asp脚本进行加密处理。一种是使用VB6.0提供的Activexdll对象将Asp代码进行封装,编译为DLL文件,在Asp程序中调用该DLL文件;另一种是使用微软提供的Script Encoder对Asp页面进行加密。但是,使用Activexdll对象进行封装的主要问题是每段代码都需要组件化,操作起来非常繁琐,不适用于大型程序的开发;而使用Script Encoder对Asp页面进行加密,使用起来非常方便,而且易于维护。

3 结束语

Asp+Access作为现在网络开发的主流方式之一,已经应用到网络的每个角落,我们在享受它为我们带来的便捷应用的同时,也要充分认识到这种编程技术自身的缺点,将主要精力放在程序安全性的预防上,用各种方式来弥补技术上的漏洞,定期做到查阅服务器日志、备份数据库等工作,及时有效地阻止外界对服务器的入侵。

参考文献:

[1] 黄峰. 基于WEB性能和安全的研究[J]. 福建电脑, 2007(7):73-121.

[2] 韩嘉柠.Web数据库的开发与安全设计.开发研究与设计技术[J],2007(5):114-115.

[3] 赵领,邓江洪.Asp访问Web数据库的应用分析.天中学刊[J],2007(5):51-53.

上一篇:基于CAN总线的分布式微型自动灭火系统 下一篇:基于PC机的函数发生器设计与实现