wizBank学习管理系统文件下载功能没有对下载的文件名称和类型进行严格检查和过滤,恶意用户可通过构造特殊的路径下载指定的文件。 wizBank学习管理系统的\www\cw\skin1\jsp\download.jsp文件的源代码如下: code 区域 ``` <%@ page import="java.io.*" %> <%@ page import="java.net.*" %> <%@ page import="java.io.*" %> <%@ page import="java.util.*" %> <%@ page import="javax.servlet.*" %> <% String DOC_ROOT = request.getRealPath("/"); File targetFile = new File (DOC_ROOT, request.getParameter("file")); response.setContentType("application/stream"); response.setHeader("Content-Disposition","attachment; filename=" + targetFile.getName() + ";"); ServletOutputStream fileOut = response.getOutputStream(); BufferedInputStream fif= new BufferedInputStream(new FileInputStream(targetFile.getAbsolutePath())); int data; while((data = fif.read())!=-1) { fileOut.write(data); } fif.close(); fileOut.close(); %> ``` ,从代码可见,没有对下载的文件名称和类型进行严格检查和过滤,恶意用户可通过构造特殊的路径下载指定的文件。
wizBank学习管理系统文件下载功能没有对下载的文件名称和类型进行严格检查和过滤,恶意用户可通过构造特殊的路径下载指定的文件。 wizBank学习管理系统的\www\cw\skin1\jsp\download.jsp文件的源代码如下: code 区域 ``` <%@ page import="java.io.*" %> <%@ page import="java.net.*" %> <%@ page import="java.io.*" %> <%@ page import="java.util.*" %> <%@ page import="javax.servlet.*" %> <% String DOC_ROOT = request.getRealPath("/"); File targetFile = new File (DOC_ROOT, request.getParameter("file")); response.setContentType("application/stream"); response.setHeader("Content-Disposition","attachment; filename=" + targetFile.getName() + ";"); ServletOutputStream fileOut = response.getOutputStream(); BufferedInputStream fif= new BufferedInputStream(new FileInputStream(targetFile.getAbsolutePath())); int data; while((data = fif.read())!=-1) { fileOut.write(data); } fif.close(); fileOut.close(); %> ``` ,从代码可见,没有对下载的文件名称和类型进行严格检查和过滤,恶意用户可通过构造特殊的路径下载指定的文件。