摘 要: 探讨网上购物系统中的系统安全性,网站安全技术,数据库安全,数据加密技术,并提出了一些解决方案。
关键词:购物系统;安全性;解决方案
一、 引言
网上购物系统方兴未艾,但随之而来的是严重的安全问题。由于购物系统存在于开放的Internet网络环境中,代码或者系统本身也可能存在漏洞,势必可能受到网络中病毒、木马和其它方式的攻击,购物系统由其本身的特点,安全性要求是它的一项最重要的要求。因此需要对购物系统的安全进行充分的考虑。
二、系统安全性
Web网站存放于Web服务器,要保证网站的安全首先需要确保服务器系统的安全。对服务器做如下安全设置:
(1)安装系统时选择NTFS格式进行安装。安装好后,设置自动更新,及时打好系统补丁。
(2)安装好防火墙和杀毒软件并及时更新,对防火墙应设置适当的安全级别和相应的规则,设置端口保护。
(3)删除默认共享,将不需要的端口关掉,需要经常使用的端口更改端口号,防止网络攻击。
(4)合理的设置操作系统的账号,关闭guest账号、删除不必要的账号,将Administrator用户改名设置足够强壮的密码,对于其它账号根据够用的原则设置好合适的权限。
(5)关闭不需要用到的服务,删除或改名不安全的组件,禁用空连接,不安装不必要的软件防止第三方软件漏洞。
三、网站安全技术
网站常常由于源程序的本身缺陷与程序编写经验的不足、权限设置的不合理等因素的影响,可能存在诸如脚本信息泄露、SQL注入、绕过权限验证、木马等安全问题,在应用过程中注意好相应的设置、进行相应的处理就能很大程度上减少此类问题带来的影响。
(1)IIS安全设置
关闭并删除默认站点,系统所在位置与系统不在同一个分区,删除不必要的IIS映射和扩展,把一切ASP 错误,服务器返回的信息设置为http500 错误,设置好网站的Web权限,一般情况下不给那些静态网站以“脚本和可执行”权限。动态网站只要给个“纯脚本”权限就够了,对于那些上传文件的存放目录,执行权限设为“无” 。
(2)为了防止非法用户将有可能运行上传的脚本、木马等,进而控制站点、甚至整个服务器,上传目录应设置不给脚本执行权限,对上传的数据的文件类型也需要进行限制。
(3)防止权限验证程序被绕过
对于需要通过身份验证后才能被访问的页面,可以绕过身份验证, 直接进入到该页面,这样做为用户区分与权限分配的验证程序就失去了原有的作用。为防范此漏洞, 可以通过对需要通过身份验证的页面添加对存储在cookies或session对象中的再次验证来实现安全控制。当访问者通过身份验证页面后, 就把Cookies信息或对象的属性存储起来, 当访问者试图登录到有效链接页面时, 将当前身份信息与存储的验证信息行比较, 如果不匹配,则拒绝访问。
(4)防范SQL注入攻击
Web系统经常要以用户输入或者传递的参数来构造SQL语句,并让后台的数据库执行。SQL注入是系统通过输入的内容构造出来的SQL语句,在执行时改变了查询条件或者附带执行了攻击者注入的整个SQL语句,从而让攻击者达到了非法的目的 。
程序开发人员在编写网站程序时, 应对用户可能输入的信息进行检验、过滤, 阻止恶意代码的攻击, 以达到注入攻击的防御效果。目前这种检验方法一般有两种。
① 替换或删除敏感字符/字符串
对用户传递过来的参数, 使用替换函数, 将认为危险的所有字符替换成为相应的安全字符。
② 在服务器正式处理前对提交数据进行检验。
如果检验出有非法字符输入时, 服务器立即终止处理, 不给SQL注入攻击的机会。
(5)ASP脚本加密
为有效地防止ASP 源代码泄露, 可以对ASP 页面进行加密。使用微软的Script Encoder 对ASP 页面进行加密,操作简单、收效良好。
四、数据库安全
在ASP环境中,常用的后台数据库是SQL Server,其安全技术主要有。
(1)更改sa口令,取消guest账号,SA具有对SQL Server数据库操作的全部权限,但在安装SQL Server时sa缺省口令为空,为SQL Server带来了潜在的隐患,应把sa的口令换为更安全的口令,同时不能把sa账号的密码写在应用程序或者脚本中。
(2)控制访问权限
定义用户和角色对数据库、数据表和数据列的访问权限,限制用户对表拥有直接的查询、更改、插入、删除权限,可以通过给用户访问视图和执行存储过程的权限,以保证数据库的安全。
(3)限制SQL Server自带的存储过程
在SQL Server攻击中有一类是构造特殊字符串调用SQL Server系统中master数据库自带的存储过程来获取权限。可以去除或限制SQL Server系统中自带的存储过程。
(4)加强数据库访问日志的监视,定期备份数据库审核数据库登录事件的“失败和成功”,在实例属性中选择“安全性”,将其中的审核级别选定为全部,这样在数据库系统日志里就详细记录了所有账号的登录事件,一旦出现问题能够查出原因,及时补救。同时,制定完整的数据库备份策略,在必要的时候能够实现对数据库的恢复。
五、数据加密技术
用户的密码在传输时可能被窃取,数据库中的密码可能被系统的管理员查看或破解,如果数据库被入侵那么数据库中的信息将毫无安全性可言,为了防止授权用户的密码被泄露,系统应该在数据传输过程以及数据库中对数据以加密的形式进行传输和保存。
MD5作为最为常用的一项加密算法,其以加密强度颇大而著称,被广泛用于加密和解密技术上。在使用MD5的Web系统验证用户时,在客户端对用户的密码进行加密,然后将加密后的数据传输到服务器端与数据库中保存的经过MD5加密的该用户的密码进行比较,如果相等则表示该用户是合法的。通过这样方式验证用户,即使用户密码的MD5值被窃取也是无所谓的,因为MD5函数的计算过程是不可逆的,知道计算值是计算不出原来的字符串的。
对于一部分密码的设置过于简单的用户,可能存在攻击者使用查询的方法通过对搜集的大量MD5的密文和明文的对应信息对用户密码进行匹配尝试来获取密码信息的隐患。对于这种攻击方式,我们可以采取以下几种方法来解决:
(1)增强用户密码
即用户密码的二次加密。将用户密码加上特殊的前缀或后缀,包含数字、字母、特殊符号等,使密码长度加长,强度明显增强,防止用户设置的密码过短、过于简单而易破解
。如:在密码前、后或中间加上一段特殊字符串“!&a%S%2!#@)?>”,或一串随机码(如验证码),把用户密码加长至20位以上,再经MD5码加密,可使密码强度增加,破解的难度明显增大,即使被下载破解了,由于密码人为加长,与实际密码不符而无法得知其真实密码。
(2)用MD5 码多次加密
一种方法是直接对MD5加密过的数据进行二次或多次加密。如前面所说的密码“admin888”我们把它再MD5 一次,即md5(md5('admin888'));得到的值再拿到cmd5.com上去破解,过了很长时间,没有破解成功。另一种方法是在每次加密后从中抽取部分值进行再加密,比如“我爱你”,加密后“1E6986ACEC7BAE541AB7B37B99260DAF”,我们可以取任意一部分进行再加密,比如取前18 位“1E6986ACEC7BAE541”进行再加密,这种做法修改也很简单,比如asp 中调用是m d 5 (“p a s s w o r d”) 那么可以改成m d 5 ( l e f t ( m d 5(“password”),16))。
(3)修改MD5算法
这是最有效、最可靠、最捷径的方法,其特点是加密后的数据和加密前非常类似,但是不会被破解。打开MD5.asp 文件,MD5 这个散列算法的关键地方,是MD5 中的4 个常数,A 、B 、C、D 四个缓冲区寄存器,它们的初始值是:a = 0x67452301;b = 0xEFCDAB89;c = 0x98BADCFE;d = 0x10325476 .
MD5 的算法过程主要是一些异、或、求模等的运算,A、B、C、D四个值共是16 进制的4*8=32位,那么可计算可能被破解的概率空间,如果改动得越多,被破解的可能性也就越小。实际上,只要把初始值进行稍微改变,比如只改变其中一位,也不必改动算法的其它部分,就产生自己的新MD5 散列算法。如:把d=0x10325476改为d=0x10325376,这样你就有一个与众不同的MD5 算法,即使你的数据库被下载,你也可以放心地使用。
参考文献:
[1] 阮国忠,基于 ASP 网站数据库的安全漏洞及防护对策研究,福建电脑,2009.2:56~57
[2] 邹本娜,ASP代码安全性解析及黑客入侵防范方法,电脑知识与技术,2008.34:1848~1849
[3] 周桂红,基于A S P 开发的网站安全防范措施,科技创新导报,2009.1:32
[4] 郑健、魏浩成、韩星,网页制作与电子商务网站安全,电子商务,2009.1:143~144
[5] 朱敏,SQL SERVER 的数据库安全性研究,中国高新技术企业,2009.2:37~38