用ASP+Access构建网站的安全隐患及对策

时间:2022-09-18 03:05:51

用ASP+Access构建网站的安全隐患及对策

摘要:随着Internet的发展,Web技术日新月异,人们已经不再满足于静态HTML技术,更多的是要求动态、交互的网络技术。asp+access成为许多中小型网上应用系统的首选方案,被许多中小型局域网所应用,但ASP+Acces在为我们带来便捷的同时,也带来了许多不容忽视的安全问题。如何保护基于ASP+Access开发的网站,已经成为当前网络应用需要解决的问题。

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

中图分类号:TP311.1 文献标识码:A文章编号:1007-9599 (2010) 09-0000-02

Construction Site Safety Problems&Countermeasures Using ASP + Access

Lin Jingying

(Qinzhou Housing and Urban&Rural Construction Commission,Qinzhou535000,China)

Abstract:With the Internet's development,Web technology with each passing day,people are no longer satisfied with static HTML technology,more is required dynamic,interactive network technology.ASP + Access online application system for many small and medium choice for the program,applied by many small and medium local area network,but the ASP + Acces convenient for us at the same time,also brought a lot of security problems can not be ignored.How to protect the development based on ASP + Access website,Web applications have become issues to be addressed.

Keywords:ASP;Access;Security;Database

一、安全隐患的分析

(一)acess数据库的安全隐患

1.Access的存储隐患

在ASP+Access应用系统中,如果有人通过各种方法获得或者猜到数据库的存储路径和文件名,则该数据库就可以被下载到本地。例如:对于房产网站的Access数据库,人们一般命名为house.mdb等,而存储的路径一般为“URL/database”或干脆放在根目录下。这样,只要在浏览器地址栏中敲入地址:“URL/database/house.mdb”,就可以把house.mdb下载到本地的机器中,通过查看数据库就可以很轻松地破解站点,如果被下载的“*.mdb”中含有“用户权限表”,那每位合法用户名及其密码同样被公布天下,非法入侵者就可以对Webserver为所欲为。

2.Access的加解密隐患

由于Access数据库的加密机制比较简单,即使设置了密码,解密也很容易。该数据库系统通过将用户输入的密码与某一固定密钥(例如:Access97为86 FB EC 37 5D 44 9C FA C6 5E 28 E6 13)进行“异或”来形成一个加密串,并将*.mdb文件存储在地址“&H42”开始的区域内。由于异或操作的特点是“经过两次异或就恢复原值”,因此,用这一密匙与*.mdb文件中的加密串进行第二次异或操作,就可以很容易地获得Access数据库的密码。基于这种原理,我们可以轻松地编制解密程序,一个几十行的小程序就可以轻松地获得任何Access数据库的密码。因此,只要数据库被下载,其信息就没有任何安全性可言了。

(二)asp网页设计过程中的安全隐患

1.ASP程序采用的是非编译性语言,这大大降低了程序源代码的安全性。任何人只要进入站点,就可以获得源代码,从而造成ASP应用程序源代码的泄露,有些密码根本起不到任何的保护作用。

2.程序设计的安全隐患

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

二、针对上述安全隐患的对策

1.防止数据库被下载

由于Access数据库加密机制过于简单,有效地防止数据库被下载,就成为提高ASP+Access解决方案安全性的重中之重。以下两种方法简单、有效。

(1)非常规命名法。为Access数据库文件起一个复杂的非常规名字,并把它放在几个目录下。例如,对于房产网站的数据库,我们不把它命名为“house.mdb”,而是起个非常规的名字,例如:lyhjl.mdb,再把它放在如/fkkt/kj78/ak/akk9的几层目录下,这样黑客想通过猜的方式得到Access数据库文件名就很难了。

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

DBPath = Server.MapPath(“./fkkt/kj78/ak/akk9/lyhjl.mdb”)

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

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

conn.open“ODBC-DSN名”

2.对asp程序设计的安全隐患对策

(1)对ASP页面进行加密

为有效地防止ASP源代码泄露,可以对ASP页面进行加密。一般有两种方法对ASP页面进行加密保护。一种是采用“脚本最小化法则”。即ASP文件中只编写尽可能少的源代码,需要高级保密或有商业用途的脚本部分被封装到一个COM/DCOM组件中,并在ASP脚本中创建该组件,进行调用相应的方法(method)即可。另一种方法是采用微软的Script EncoderX对ASP页面进行加密。笔者认为,使用组件技术存在的主要问题是每段代码均需组件化,操作比较烦琐,工作量较大,技术要求比较高;而使用Script Encoder对ASP页面进行加密,操作简单,收效良好。

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

为防止未经注册的用户绕过注册界面直接进入应用系统,可以采用Session对象进行注册验证。Session对象最大的优点是可以把某用户的信息保留下来,让后续的网页读取。例如,设计要求用户注册成功后系统启动fa_ttis.asp?page=l页面。如果不采用Session对象进行注册验证,则用户在浏览器中敲入“URL/fa_ttis.asp?page=l”即可绕过注册界面,直接进入系统。

利用Session对象可以有效阻止这一情况的发生。

相关的程序代码如下:

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

UserID = Request(“UserID”)

Password = Request(“Password”)

‘检查Use ID及Password是否正确

If UserID “mhtu”Or Password “password”

Then Response.Write“账号错误!”

Response.end

End if

‘将Session对象没置为通过验证状态

Session(“Passed”)=True

%>

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

‘如果未通过验证,返回Login状态’

If Not Session(“Passed”) Then

Response.Redirect“Login.asp”

End If

%>

通过对ASP+Access网上应用系统安全性的研究,我们对房产网站进行了改造,收到了较好的效果。

参考文献:

[1]汪晓平,吴永强.ASP网络开发技术[M].北京:人民邮电出版社,2000

[2]顾桂英.网络数据库设计与[M].北京:清华大学出版社,2000

[3]蔡翠平,尚俊杰.网络程序设计―Asp[M].北京:清华大学出版社,2002

[4][美]Alison Balter,潇湘工作室译.access 2000中文版开发指南.北京:人民邮电出版社,2000

作者简介:

林景影(1977,11-),性别:女,学历:大学,籍贯:广西钦州,职称:工程师 计算机信息与管理,研究方向:access

上一篇:游戏中的人工智能技术 下一篇:浅谈多媒体技术在电类专业教学中的应用