ASP+Access电子商务网站安全保障思索

时间:2022-03-31 04:57:00

ASP+Access电子商务网站安全保障思索

随着电子商务的蓬勃发展,电子商务购物网站的设计具有非常重要的意义。ASP(ActiveServerPages)由于编写简单、维护方便、功能丰富等特点获得了广泛的应用,是电子商务网站建设中的常见工具。与此同时,由于Access数据库具有操作简单、功能齐全、用户界面友好、使用维护方便等优点而拥有较大的用户群体。目前,ASP+Access是中小型电子商务网站的首选方案。但是,该解决方案在带给我们便捷的同时,也带来了严峻的安全问题。本文主要从ASP和Access两方面讨论了电子商务建设中存在的几种常见的安全性问题及其解决方法。

1电子商务网站的安全分析

电子商务网站受到攻击后产生的危害主要体现在修改网页内容、窃取商业数据和个人账户资料、恶意破坏网站以及窃取程序文件等。基于ASP技术和Access数据库建设的电子商务网站,主要的安全隐患一方面来自Access数据库的安全性,另一方面来自ASP源文件和ASP网页设计过程中的安全意识。

1.1Access数据库的存储隐患

采用Access数据库建设的电子商务网站中,如果有人获得或猜到了数据库的存储路径和数据名,那么该数据库就可以被下载到本地。例如,某电子商务网站的URL(UniformResourceLocator)是,而网站使用的数据库ec.mdb就放在根目录/下。那么只要在在浏览器地址栏中输入地址:http:///ec.mdb,数据库ec.mdb就可以轻松的被下载了。

1.2Access数据库的解密隐患

由于Access数据库的加密机制比较简单,即使设置了密码,也很容易解密。该数据库系统通过将用户输入的密码与某一固定的密钥进行异或来形成一个加密串,并将其存储在*.mdb文件从地址“&H24”开始的区域中。根据异或操作的特点,可以很轻易的编制出解密程序。所以,无论数据库是否设置密码,只要数据库被下载,其信息就没有任何安全性可言了。

1.3ASP源文件的安全隐患

由于ASP程序是非编译性语言,采用ASP技术编写的脚本程序使用明文(plaintext)编写,一旦ASP应用程序到网络环境中,源代码就很容易泄漏,大大降低了源程序代码的安全性。因此任何人闯入站点,那么就可以获得全部的ASP应用程序源代码。

1.4ASP程序设计中的安全隐患

ASP代码利用表单实现和用户的交换的功能,在不同的ASP页面之间传递变量时,其内容会反映在浏览器的地址栏中。如果不采取适当的安全措施,那么只要记住这些内容就可以绕过用户身份验证而直接进入某些页面。例如,只要在浏览器的地址拦输入,就可以绕过验证而直接进入满足条件“id=10”的页面。所以在设计注册和验证的页面时必须采取相应的措施来预防此类问题的发生。

1.5SQL注入漏洞

很多电子商务网站都采用客户身份认证方式来达到内部网页加密的目的,即用户在登录窗口输入正确的用户名和密码就可以访问网页,否则报错。然而,“adminor1=1”成为攻破该类认证系统的万能密码,类似的密码还可以有无数个。一般的电子商务网站在设计登录验证时使用下面的SQL语句来验证用户的合法性:Sql="select*fromuserwhereusername="&request.form("username")&"''''andpasswd=''''"&request.form("passwd")&"''''"此时,用户只要根据sql构造一个特殊的用户名和密码,如:admin''''or''''1''''=''''1。就可以成功登录。将程序和用户数据合起来将变成:Sql=”select*fromuserwhereusername=adminandpasswd=''''''''or''''1''''=''''1''''”由于1=1是衡成立的,所以这个查询的结果也衡为真,因此就会登录成功。

2提高电子商务网站安全性的方法

2.1防止数据库被下载

1)非常规命名。为数据库文件起一个非常复杂的非常规名字且存放在多层目录下,可有效防止数据库被下载。例如,电子商务网站的数据库文件,不把它命名“ec.mdb”,而给它一个非常规的命名“adf3kxgce.mdb”,再把它放在如…/fsawdk5kl/rtr6we/jhlj9/i-uergh3p之类的深沉目录下。这样就加大了黑客通过猜测的方式来获得数据库的难度。

2)使用ODBC数据源。使用ODBC数据源也可以防止数据库被下载。在ASP程序设计中,应该尽量使用ODBC数据源,而不要把数据库名写在程序中。这样即使ASP代码泄露,数据库名也不会被知道。例如,在建立了一个数据源user后,打开数据库的ASP源码如下:setconn=server.createobject(“adodb.Connection”)conn.ConnectionString=″dsn=user;uid=;pwd=″conn.open这样,在ASP程序中就不会出现源数据库的任何相关目录和名称,大大提高了数据库的安全性。

3)利用.MDE文件保护数据库。MDE是一种经过编译的特殊形式的数据库,把数据库文件转换为MDE文件后,可以完全保护Access中的代码免受非法访问。将.mdb文件转换为MDE文件时,Access将编译所有模块并删除所有可编辑的源代码,然后压缩目标数据库,而原始的.mdb文件不会受到任何影响。

4)改数据库扩展名。由于.inc文件在IIS上默认是不允许浏览的,因此根据IIS的这一特点可以把数据库的后缀名改为.inc。这种通过在IIS上把数据库所在的目录设置为不可读的方法也可以防止数据库被下载。

5)数据库加密。对数据库中的信息进行加密,可以保证即使在黑客下载到数据库文件并打开数据库后,也不能有效获取数据。目前的加密算法有很多,常用的专用密钥加密(如:3DES、IDEA、RC4和RC5)和公钥加密(如:RSA、SEEK、PGP和EU)能很好的保证数据的保密性、完整性和真实性。

2.2对ASP页面进行加密

为有效的防止ASP源代码泄露,必须对ASP页面进行加密。ASP页面加密一般有两种方法:一种是使用组件技术将程序代码封装入DLL中;另一种是使用微软的ScriptEncoder对ASP页面进行加密。由于使用组件技术需对每段代码组件化,且由于操作烦琐,工作量较大等原因而很少使用。一般使用ScriptEncoder对ASP页面进行加密,它不但操作简单,而且加密效果也很好,只需掌握一些基本的命令即可,而且可以处理批量的ASP页面。

2.3利用Session对象设计注册和验证页面

为防止未注册的用户绕过注册页面的验证而直接进入应用系统,可以采用Session对象来进行注册验证。例如,本系统利用下面的代码来实现注册页面的验证:<%''''读取用户的账号和密码User_ID=Request(“UserlD”)Password=Request(“Password”)''''检查UserID及Password是否正确IfUserID<>“Name”orPassword<>“password”ThenResponse.Write“你输入的账号不正确!”Response.EndEndIf''''将Session对象设置为通过验证状态Session(“Passed”)=True%>进入应用程序后,首先进行验证:<%''''如果未通过验证,则重新返回登陆状态IfNotSession(“Passed”)ThenResponse.Redirect“Login.asp”EndIf%>

2.4SQL注入漏洞防范策略防范SQL注入漏洞,要求程序员形成良好的编程习惯,可以采用如下方法来防范这类攻击:

1)在客户身份认证时将用户名的检验和密码的检验分开。也就是先使用SQL语句检验登录的用户名是否存在,对于已存在的用户名确认只有一条记录再进行密码验证,否则就直接转入出错页面。

2)对用户提交的用户名和密码中可能存在安全隐患的特殊字符进行过滤。常见的可能存在安全隐患的特殊字符主要有:单引号、select、update、insert、delete、@、exec、alter、drop、create、backup、and、or、add、set、open、close等,但要注意ASP对大小写是不敏感的。3结束语电子商务的安全涉及到交易过程中各种数据的可靠性、完整性和可用性。就整个电子商务系统而言,安全性可以分为网络节点的安全性、数据通信的安全性、应用程序的安全性、用户的认证管理和安全管理五个层次。随着网络与电子商务的迅速发展,创建稳定可靠的Web站点显的越来越重要。建设电子商务网站应该充分考虑电子商务中的安全性。随着黑客入侵手段的不断提高,只有不断提高安全意识,不断改进程序,才能确保电子商务网站的安全水平不断提高,减少被入侵的机会,建立真正稳定运行的电子商务网站。总之,保障电子商务网站的安全是一项不可松懈、长期而艰巨的工作和任务。