美章网 资料文库 电子商务网站安全范文

电子商务网站安全范文

电子商务网站安全

一、

Internet已渗透到了社会的各个领域,不仅影响着我们的学习和工作,在Internet的发展中,WWW的发明和迅速推广应用是一个重要的里程碑。网页设计作为一门新兴的技术,是介于平面设计、编程技术两者之间的一门学科,它还涉及到美学心理、平面构成、色彩搭配等平面设计方面的知识。只有综合运用多种知识,才能设计出视听特效、动静结合、人机交互的WEB页面。

电子商务网站是一个非常丰富和方便的系统,很多是过去无法想像的,随着今天的社会的发展以及科学技术的发展,现在都可以想像得到。由此可以想像到未来的网页设计,那时候网页设计的要求是什么呢?怎样才能适应电子商务的发展呢?我有以下几点想法:网页能具有人性化;网页要具有相当的美感;网页更加强调交互性。

二、电子商务网站的安全现状

电子商务网站安全主要涉及网络信息的安全和网络系统本身的安全。电子商务网站安全的隐患主要来自操作系统、网络和数据库的脆弱性以及安全管理上的疏忽。电子商务网站安全从本质上讲就是网络上信息的安全,包括静态信息的存储安全和信息的传输安全。从广义上讲,凡是涉及到网络上信息的保密性、完整性、可用性、真实性和可控性的相关技术和理论都是网络安全的研究领域。因此为了保证网络的安全,必须保证以下四个方面的安全:运行系统的安全;

网络上系统信息的安全;网络上信息传播安全;网络上信息内容的安全。

以下是对目前国内电子商务站点普遍存在的几个严重的安全问题的一些分析。

1.客户端数据的完整性和有效性检查

(1)特殊字符的过滤

在W3C的WWWSecurityFAQ中关于CGI安全编程一节里列出了建议过滤的字符:&;“”\“|*?-<>^()[]{}\n\r,这些字符由于在不同的系统或运行环境中会具有特殊意义,如变量定义/赋值/取值、非显示字符、运行外部程序等,而被列为危险字符。

①CGI和Script编程语言的问题

在几种国内常见的WEB编程语言中,ASP和ColdFusion脚本语言对特殊字符的过滤机制不够完善,例如没有对单引号做任何处理等。Perl和php对特殊字符的过滤则较为严密,如忽略或加上“\”(取消特殊字符含义)处理。C语言编写的cgi程序对特殊字符的过滤完全依赖于程序员的知识和技术,因此也可能存在安全问题。

②MicrosoftASP脚本

普遍存在的问题是程序员在编写ASP脚本时,缺少或没有对客户端输入的数据/变量进行严格的合法性分析。因此,如果攻击者输入某些特定sql语句,可能造成数据库资料丢失/泄漏/甚至威胁整个站点的安全。比如攻击者可以任意创建或者删除表(如果可以猜测出已存在的表名),清除或者更改数据库数据。攻击者也可能通过执行一些储存过程函数,将sql语句的输出结果通过电子邮件发送给自己,或者执行系统命令。

③PHP和Perl

虽然提供了加上”\”(取消特殊字符含义)处理的手段,但是处理一些数据库时依然可以被改写。对于MySQL则没有问题,\’不会与前面的单引号封闭,而当作一个合法的字符处理。针对oracle和informix等数据库暂时未进行相关测试。

另外,对于PHP或者Perl语言,很多程序对于数字类型的输入变量,没有加单引号予以保护,攻击者就有可能在这种变量中加入额外的SQL语句,来攻击数据库或者获得非法控制权限。

(2)数据库问题

不同的数据库对安全机制的不同认识和实现方法,使它们的安全性也有所不同。最常见的问题是利用数据库对某些字符的不正确解释,改写被执行的SQL语句,从而非法获得访问权限。

2.大量数据查询导致拒绝服务

许多网站对用户输入内容的判断在前台,用JavaScript判断,如果用户绕过前台判断,就能对数据库进行全查询,如果数据库比较庞大,会耗费大量系统资源,如果同时进行大量的这种查询操作,就会有DenialofService(DoS——拒绝服务)同样的效果。

三、措施与解决方案

通过查阅一些资料,下面介绍一些网页制作中安全防范的方法,以供大家参考。

1.防范脚本攻击

(1)JS脚本和HTML脚本攻击的防范其实很简单,只要用server.HTMLEncode(Str)就可以了。当然全以<%=uid%>过滤,为了方便的过滤,只需要将HTML脚本和JS脚本中的几个关键字符过滤掉就可以了,如下代码所示:以下是过滤函数CHK()

<%

functionCHK(fqyString)

fqyString=replace(fqyString,“>”,“>”)

fqyString=replace(fqyString,“<”,”<“)

fqyString=replace(fqyString,“&#”,“&”)

fqyString=Replace(fqyString,CHR(32),“”)

fqyString=Replace(fqyString,CHR(9),“”)

fqyString=Replace(fqyString,CHR(34),“”“)

fqyString=Replace(fqyString,CHR(39),”‘“)

fqyString=Replace(fqyString,CHR(13),”“)

fqyString=Replace(fqyString,CHR(10)&CHR(10),”</P><P>“)

fqyString=Replace(fqyString,CHR(10),”

“)

CHK=fqyString

endfunction

%>

(2)很多站点在用户注册,或者是用户资料修改的页面上也缺少脚本的过滤,或者是只在其中之一进行过滤,注册进入后修改资料仍然可以进行脚本攻击。对用户提交的数据进行检测和过滤如以下代码:

IfInstr(request(”username“),”=“)>0or

Instr(request(”username“),”%“)>0or

Instr(request(”username“),chr(32))>0or

Instr(request(”username“),”?“)>0or

……

Instr(request(”username“),”>“)>0or

Instr(request(”username“),”<“)>0or

Instr(request(”username“),”“”“)>0then

response.write”朋友,你的提交用户名含有非法字符,请更改,谢谢合作<ahref=’****:window.history.go(-1);‘>返回</a>“

response.end

endif

2.防范sqlinjeciton攻击

从最一般的.SQLInjection漏洞攻击来看,主要在用户名和密码上的过滤问题,提交:用户名为:‘or’‘=’用户密码为:‘or’‘=’从程序出发,数据库在执行以下操作Sql=“SELECT*FROMlUsersWHEREUsername=”or“=”andPassword=“or”=“”时,SQL服务器将返回lUsers表格中的所有记录,而ASP脚本将会因此而误认为攻击者的输入符lUsers表格中的第一条记录,从而允许攻击者以该用户的名义登入网站。对此类注入的防范可以利用以下代码就可以实现strUsername=Replace(Request.Form(“Username”),“‘’”,“‘’‘”)

strPassword=Replace(Request.Form(“Password”),“’‘”,“’‘’‘”)

3.防止ASP木马

防止ASP木马被上传到服务器的方法很简单,如果你的论坛支持文件上传,请设定好你要上传的文件格式,我不赞成使用可更改的文件格式,直接从程序上锁定,只有图象文件格式和压缩文件就完全可以,因为多给自己留点方便也就多给攻击者留点方便。怎么判断格式,如下面代码所示:

判断文件类型是否合格

PrivateFunctionCheckFileExt(fileEXT)

dimForumupload

Forumupload=”gif,jpg,bmp,jpeg“

Forumupload=split(Forumupload,”,“)

fori=0toubound(Forumupload)

iflcase(fileEXT)=lcase(trim(Forumupload(i)))then

CheckFileExt=true

exitFunction

else

CheckFileExt=false

endif

next

EndFunction

上述介绍的一些安全防范的方法在编写网页代码时被常用到,这些代码还是较为基本的一些代码,但能有效的防止一些黑客的攻击,当然加入了这些代码可能会降低程序的使用效率。做为一名网站的管理人员或网页制作人员在进行网页制作和网站维护时应加强安全防范的意识,确保在网络上进行数据传输的可靠性。

总之,随着网页制作的技术不断的发展和提高,对电子商务的发展有着不可估量的推进作用,对于网站的安全防范已经成为目前发展电子商务最需考虑的一个问题之一,在开发网站中应注意在网络安全方面的考虑。目前如JSP、ASP、PHP、XML等一些网站新技术融入网页制作中,进一步提高了网页的性能。随着新的技术的推出,我相信网页制作的发展会把我们带入一崭新的信息世界。