Java,Web应用程序安全技术研究

提要:随着网络技术和信息技术的发展,Java Web技术的应用越来越广泛,但是随之而来的安全问题成为了亟需解决的问题。本文对Java Web应用技术所面临的安全威胁做了简单的阐述,并对其做了比较详细和系统的技术分析,指出了相关Web技术存在的漏洞,分析并提出了安全解决方案,为开发安全的Java Web应用程序提供支持。

关键词:web技术;Java安全;漏洞

中图分类号:TP393.08文献标识码:A文章编号:1007-9599 (2012) 04-0000-02

随着网络技术和信息技术的飞速发展,网络成为越来越多的人们进行各种各样活动的主要媒介。数字化的网上业务如电子商务、电子政务、数字化图书馆、远程教育、网上休闲娱乐等各种活动数不胜数。而基于Web的应用系统是在Internet中发展最快的一种计算机应用系统。不管是是企业或机构内部计算机应用系统,还是在互联网上的网上应用服务系统,均采用Web技术[1]。基于Web的系统发挥着越来越重要的作用,并逐渐成为了计算机应用系统中的主流模型。但是,由于Internet是一个无主管、不设防及缺少法律约束的网络空间,这些先天不足成为网络发展的阻碍和威胁,也影响Java Web的应用。如何推动其快速健康发展,网络信息安全问题成为急需解决的问题。

一、Web应用程序面临的威胁概述

Web应用程序是基于Web开发的应用程序,包括服务器和客户端两个基本的组件,它可以读取客户端的请求并向客户端发送响应和数据。服务器端和客户端的通信协议以HTTP为基础,根据安全级别采用加密的SSL/TLS协议等来保障通信过程的机密性和完整性。由于Internet不安全性的特点,Web应用程序安全成为了设计人员和开发人员面临的问题。其威胁主要在于三个方面:其一,客户端的安全威胁,主要包括客户端开发技术的安全漏洞被恶意代码利用,以及客户端浏览器本身的缺陷导致的恶意代码执行;其二,服务器端的安全威胁也是来源于两个方面,包括Web应用程序的服务器端代码隐藏的缺陷可能被攻击者利用,以及其运行支撑环境存在的缺陷,如SQL注入漏洞和操作系统漏洞等等;其三,通信过程的安全威胁主要包括信息窃听和通信数据的篡改,影响的主要是Web应用程序的通信数据的机密性和完整性。

二、Web技术及其安全和相关研究进展

基于客户端、服务器端以及通讯过程的安全威胁,可以简单的分为以下几个方面:

(一)对Web应用程序应在程序级和代码级进行安全防范[2]。要编写高效、安全的Web应用程序,首先应了解其的各种开发环境和目标程序的安全性和稳定性等;其次是应熟悉黑客常用技术,以及了解黑客的心理、类型、目的及技术等相关内容。只有真正的了解这些,才能编写出具有防范能力和相对安全的Web程序。了解黑客及其技术,可参考资料[3,4]

(二)采用各种方式来作为用户身份认证,如数字证书等,并利用服务证书和客户端证书实现服务器与客户端之间的SSL双向认证,以实现数据的安全传送。[5]

(三)通过各种计算机技术减少Web应用程序的安全通信的负面影响

1.JavaScript

JavaScript是一种应用了基于对象和事件驱动技术的脚本语言,具有一定的安全性能。由于其具有使网页更加生动活泼,且在网页设计中最容易学又最方便的语言,以及通过做出亲切的欢迎讯息等特殊效果而提高网页的可观性。因为这些优点使其被绝大多数浏览器支持。目前所研究的劫持方法至少有2种,一是DOM劫持,即劫持DOM(document object model.文档对象模型)中的节点。[6]但是如果恶意代码劫持了document对象,并对createElement方法进行重复定义,则函数句柄反劫持方法将会失效。

另一种方法叫做函数句柄劫持,即通过将一些标准的JavaScript函数或者浏览器对象中的方法进行重新定义或赋值。[7]但是实际环境中,恶意代码完全有可能没有保留被劫持函数的原有句柄副本,就会给函数反劫持带来很大的困难。

所以目前JavaScript函数反劫持技术是一个难点,对其反劫持技术的防范,只能依靠Web应用程序服务器端的验证代码逻辑来避免用户提交的内容中包含客户端脚本劫持代码。[8]

2.Ajax

Ajax(Asynchronous JavaScript and XML)是指一种创建交互式网页应用的网页开发技术。Ajax的核心是JavaScript对象XmlHttpRequest,利用其进行后台异步数据读取,实现了页面的动态显示和交互,不需刷新浏览器窗口即可满足用户的操作,从而增强了客户端的用户体验。[9]

尽管Ajax即时数据反馈的特点实现了良好的用户交互,但危险的安全威胁也随之而来。虽然其本质上没有增加原有Web程序的安全漏洞,只是由于Ajax技术相对比较新,还没有完整的“最佳实践”,所以就使得Ajax程序的漏洞比传统的Web程序更多。为了数据安全和防止泄漏,应注意以下几点:当页面状态改变时,需要明确的告知用户;同时在客户端和服务器端对用户输入进行校验;客户端在处理服务器返回的数据时进行校验;如果服务器需要做用户认证,那么请在所有的服务端脚本上做认证的检查。

3.Cookie

Cookie指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。其用途在于服务器可以利用Cookie包含信息的任意性来筛选并经常性维护这些信息,来判断在HTTP传输中的状态。目前,大部分浏览器都通过兼容Cookie技术来帮助网站存储有关访问者的信息。但Cookie技术同时也为一些网络黑客提供了可乘之机,进而造成数据泄漏。主要为XSS/CSRF和Web蠕虫。

CSRF(Cross-site request forgery跨站请求伪造)是一种对网站的恶意利用,与XSS(跨站脚本)不同。但二者的攻击方式却不相同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。可以通过增加人机交互环节,如图片验证码、双因素口令卡等来防止客户端脚本对用户Cookie的访问,必要时还可给敏感操作加上水印。

Web蠕虫(又称为XSS蠕虫)对网站和社区类型站点的危害严重。其利用Web应用程序自身的缺陷,并根据Web应用程序的特性来进行传播。主要攻击目标有用户Cookie窃取和回话劫持、篡改网页以及执行恶意脚本等。但是,目前对于这种类型的攻击还没有比较好的方法进行解决这一问题。

三、结语

Java Web应用程序的开发不应仅仅只依靠Java技术,还应结合Web技术,并根据Web技术中存在的漏洞在开发Java Web应用程序时采取相应的策略,为提高Java Web应用程序的安全性提供保障。

参考文献:

[1]Powell T A.Web设计大全[M].詹剑锋,刘宏友,韩艳蜂.北京:机械工业出版社,2001:3571

[2]李钢,张仁斌.对Web应用程序安全性的初步研究[J].合肥工业大学学报:自然科学版,2003,26(z1):711-713

[3]郭志峰.阻击黑客进攻防卫技术[M].北京:机械工业出版社,2003:12-133

[4]谭毓安.应对黑客实践——网络攻击防护编码设计[M].北京:希望电子出版社,2002:77-85

[5]罗锐,程文青.Java安全体系在Web程序中的研究和应用[J].计算机应用研究,2006,23(7):114-115

[6]W3C document object model.https://www.w3.org/DOM

[7]陈华.Java Web应用程序安全技术研究[J].计算机安全技术,2010:123-139

[8]黄玮,崔宝江,胡正名.Web应用程序客户端恶意代码技术研究与进展[J].专题:网络与信息安全.72-79

[9]WALLACE B M,PAUL G.Beginning ASP.NET 2.0 AJAX[M].India:Wiley India Pvt Ltd,2007

推荐访问:技术研究 应用程序 Java Web