jsp安全问题及其解决建议
jsp编程语言自从推出之日起,由于它的快速、平台无关、可扩展、面向对象等特性得到了越来越广泛的应用,越来越多的厂家开发出了各种各样的支持平台如IBM 公司的WebSphere、BEA公司的WebLogic等等,也有越来越多的网站开始将自己的平台架构在jsp 环境中。但是随之而来的就是一系列的安全漏洞问题,如源代码暴露漏洞、远程任意命令执行漏洞等等,更为头疼的是,随着jsp 的越来越广泛的应用,安全问题也越来越多了。截止到这篇文章为止,Internet上公开的关于jsp 的漏洞问题就多达二、三十条(还不包括未公开的)。(统计数据来源于http://www.securityfocus.com)
不要轻视这些问题,想象一下,你辛辛苦苦开发出来的jsp 代码就被别人这样轻而易举的获得了,更为重要的是,你公司网站的代码被人下载后,别有用意的人就会看你的代码,从中找到一些漏洞来攻击你的公司网站,所以这些问题不容忽视。作者在sohu 上搜索了一些用jsp做的国内网站,结果发现有一些网站确实存在各种各样的漏洞,可以轻松的下载jsp源代码。
本篇文章重点在于对jsp安全问题进行分类阐述和提出解决的建议,所以每种类型的安全问题只采用了一个例子,对于其它各种漏洞的具体细节如涉及到何种软件版本何种操作系统等就不一一进行阐述了,有兴趣的读者可以到我的网站jsp 爱好者(http://jspbbs.yeah.net)或者国外的安全站点(http://www.securityfocus.com)进行查看和参考。
根据目前已经发现的jsp安全问题,我们不妨将它们分为以下几类,源代码暴露类、远程程序执行类和其他类别, 下面来看看具体的东西吧。
一、源代码暴露类
源代码暴露类别主要指的是程序源代码会以明文的方式返回给访问者.
我们知道不管是jsp还是asp、php等动态程序都是在服务器端执行的,执行后只会返回给访问者标准的html 等代码。这是理论上的东西,实际运行起来由于服务器内部机制的问题就有可能引起源代码暴露的漏洞,简单的例子只要在程序文件名后加几个简单的字符就可能获得程序代码,如常见微软asp 的global.asa+.htr、XXXX.asp%81等等漏洞。
1、添加特殊后缀引起jsp源代码暴露
在jsp中也存在着和asp这些漏洞类似的问题,如IBM Websphere Application Server 3.0.21、BEA Systems Weblogic 4.5.1、Tomcat3.1等jsp文件后缀大写漏洞;jsp 文件后加特殊字符如Resin1.2的%82、../漏洞;ServletExec的%2E、+漏洞等等。
例子:举个老一点的JSP大写例子,Tomcat3.1下在浏览器中本来是http://localhost:8080/inde.jsp,可以正常解释执行,但是如果将inde.jsp改为inde.JSP或者inde.Jsp等等试试看,你会发现浏览器会提示你下载这个文件,下载后源代码可以看个一干二净。
补充:Jsp教程,Jsp/Servlet开发工具