因此,我的任务是在基本的 Java Web 应用程序中修复路径遍历问题,但我非常卡住。我们的目的是从本质上确保代码是安全的,同时保持功能(这是我正在努力的部分)
到目前为止,我已经在网上查看了如何解决我收到的问题,并且我设法解决了这些问题,但是测试代码的机器人返回一条消息,指出该应用程序不再具有功能,但是是安全的。
我收到的 2 个错误如下:
1) FileDownload 中的 PATH_TRAVERSAL_IN。java 源文件文件下载。java 类名 chatapp。FileDownload 方法名称 doGet Source Line 31
2) FileDownload 中的 PT_RELATIVE_PATH_TRAVERSAL。java 源文件文件下载。java 类名 chatapp。FileDownload 方法名称 doGet Source Line 28
作为参考,此代码是其功能的原始代码,但它不安全。
private String DOWNLOAD_PATH = new File(".").getCanonicalPath() +
"/webapps/webapp/app/download";
public FileDownload() throws IOException {
}
public void init() throws ServletException {
//To Do
}
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
!!!String file = request.getParameter("file");
String downloadPath = DOWNLOAD_PATH + "/" + file;
!!!File downloadFile = new File(FilenameUtils.getName(downloadPath));
if (downloadFile.exists()) {
response.setContentType("application/octet-stream");
response.setHeader("Content-disposition", "attachment; filename="+ downloadFile.getName());
FileInputStream fis = new FileInputStream(downloadFile);
byte[] data = new byte[(int) downloadFile.length()];
fis.read(data);
fis.close();
OutputStream out = response.getOutputStream();
out.write(data);
out.flush();
}
else
response.sendError(404);
}
有没有人有解决这类问题的经验?我有点困惑