胡志鹏邓 莉
(1.四川航天职业技术学院 四川成都 610100;2.成都龙泉第六中学 四川成都 610100)
WEB编程中脚本漏洞的分析与防范
胡志鹏1邓 莉2
(1.四川航天职业技术学院 四川成都 610100;2.成都龙泉第六中学 四川成都 610100)
脚本在网络中的应用,可以说是随处可见,其中ASP,PHP,JSP,ASPX等常见的脚本语言更是被广泛应用于各类基于WEB服务的系统中。而由于程序员在设计WEB程序的时候不注意到脚本漏洞,给不速之客带来了方便,可以说脚本漏洞的攻击对于他们来说是永具生命力的攻击手段。网络安全是每一个计算机用户和WEB程序员必须面对的问题,本文针对WEB编程中存在的几个典型脚本漏洞进行了实例分析,并给出适当的防范措施,期望引起WEB程序员对网络安全的重视。
WEB 编程 脚本漏洞 黑客技术
其实脚本是介于HTML与Pascal、C++、Java、VB、C#等编程语言之间的一种语言。它是以“操作系统+脚本引擎(脚本解释器)+脚本语言”的工作方式,要使脚本语言在服务器端上正常工作,就需要在服务器端安装脚本引擎,如ASP安装IIS,JSP安装JDK+RESIN,ASPX安装IIS+.NET FRAME等,脚本引擎提供脚本在主机的环境,并对脚本程序中的脚本命令进行解释。当解释完毕后,脚本引擎把执行结果以HTML的语言格式发送给客户端。[1]
根据上面的我们知道客户端的浏览器时可以变量或者命令的形式向脚本程序提交数据和指令的,这就是说我们在编写脚本程序代码的时候应该避免出现脚本程序处理数据和指令存在的漏洞和缺陷,根据本人在编写程序中遇到的漏洞一些问题,总结如下:
1.弱字符过滤
在实际WEB编程的过程中,我们需要对表单提交的数据进行处理,但是有时处理不当就会出现很多问题,如果对提交的数据又是需要用Javascript技术,而过滤的时候没有注意到这些问题,比如在一个表单中用户用了Javascript技术,而没有过滤掉这些代码,有可能用户在浏览表单内容就死机:而如果表单提交到数据库的数据没有结果数据的过滤,可能遇到更严重的漏洞,以JSP为例子,下面是一个管理员登录页面的程序片断:[2]
上面的代码咋一看去没有什么漏洞,其实不然,如果用户在登录的时候在name和password文本框都输入"'or''1'='1",提交到服务器,上面的sql语句就是:
上面的语句执行后显然rs.eof为真,于是把admin登录标准置为ture,让攻击者以管理员的身份登录了admin.jsp页面,在该用户以管理员的身份登录服务器后,他很可能向服务器上传木马程序,进而得到服务器系统管理员的权限。
2.身份认证不能忽视在黑客软件泛滥
网络带宽畅通的今天,破解比较简单的密码已经不是一件很难的事情。在网络上比较有名的WEB密码破解软件—溯雪,可以用暴力破解网络上基于WEB表单的密码,其原理很简单,就是用密码字典生成密码文件,然后不停的向服务器提交字典表单的数据,当服务器返回为真的ID和密码,就成功破解。对于一个预防攻击的Web表单来讲,验证码通常是一个常见和有效的措施。
3.少用Cookies
Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器。网络服务器用HTTP头向客户端发送Cookies,在客户终端,浏览器解析这些Cookies并将它们保存为一个本地文件,它会自动将到同一服务器的任何请求缚上这些Cookies。WEB编程Cookies的运用,可以方便电脑暂时检测用户的类型,给WEB程序员和电脑用户带来很多方便。可是对于网络的破坏者来说,也是给他开个一个后门,有时甚至他可以让你访问他的一个简单的网页,他就可以轻易盗取你的账号和密码。
4.慎用Javascript
Javascript是一种新的描述语言,此语言可以被嵌入HTML的文件之中。透过Javascript可以做到回应使用者的需求事件(如:form的输入)而不用任何的网路来回传输资料,所以当一位使用者输入一项资料时,它不用经过传给服务器(Server)处理,再传回来的过程,而直接可以被客户端(Client)的应用程式所处理。
由于它一般只在客户端执行,而且其源代码客户端可以直接看到,跟服务器端没有必然联系,而它又可以在客户端离线修改了再运行,所以没有较高的安全性。
总而言之,在WEB编程过程中,本文只是对其脚本漏洞最典型的一些方面进行阐述,当然,这些漏洞的防范也不止上面所列举的方案。本文在举例过程中,主要用到的是JSP脚本语言技术,但是只是说用的语言不同而已,其他的脚本语言会存在同样的问题。由于本人技术和时间有限,望计算机同仁能在WEB脚本漏洞提出更多更好的意见和建议。
[1]亿龙电脑网.http://xxgc.zjbti.net.cn/ku fl ash/article_view.asp?id=65.
[2]《黑客X档案》.2003年第11期.
[3]《Java2类库》(增补版).机械工业出版社.