今天早上收到老师转的一封邮件,是关于我们实验室网站的一个安全漏洞的,光看邮件笔者第一时间看不太懂。后来打电话咨询才搞清楚是怎么一回事。
下面这幅图的意思是通过一个软件生成一个非法链接访问我们实验室的网站,可以查看系统文件web.xml,对了,这个软件叫“补天漏洞响应平台”。这的确是一件蛮严重的事情。这个漏洞是怎么造成的呢?请看一行代码。
request.getRequestDispatcher(errorurl).forward(request, response);
这个代码有没有问题?答案是肯定有问题,还不小。变量errorurl是通过get方式传过来的,如果在在浏览器中输入"****?errorurl=/WEB-INF/web.xml"这样一个链接,通过转发真的是会查看到web.xml内容的。知道了这个漏洞的原委,填补很简单。
办法也有很多,笔者给出一种,主要思路就是限制其转发系统中禁止被访问的内容,代码如下。
if(errorurl !=null && errorurl !="" && errorurl.length() >=4 && errorurl.indexOf("WEB-INF")==-1 ){
request.getRequestDispatcher(errorurl).forward(request, response);
} else {
throw new Exception("非法链接");
}