0
我在尝试构建一个web应用程序,它可以将文件上传到我的服务器,并获取稍后下载的链接。上传到服务器的文件存在安全漏洞 - java ee - tomcat
我使两个吊环分辩与下面的代码:
String subirArchivo(int codigo, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
Part filePart = request.getPart("archivo"); // Obtiene el archivo
String fileName = Paths.get(filePart.getSubmittedFileName()).getFileName().toString(); // MSIE fix.
//InputStream fileContent = filePart.getInputStream(); //Lo transforma en InputStream
String path="/archivos/";
File uploads = new File(path); //Carpeta donde se guardan los archivos
uploads.mkdirs(); //Crea los directorios necesarios
File file = File.createTempFile("cod"+codigo+"-", "-"+fileName, uploads); //Evita que hayan dos archivos con el mismo nombre
try (InputStream input = filePart.getInputStream()){
Files.copy(input, file.toPath(), StandardCopyOption.REPLACE_EXISTING);
}
return file.getPath();
}
当文件被上传到C:\ archivos,我不得不添加
<Context docBase="C:\archivos" path="/archivos" />
内的server.xml从Tomcat配置。
问题是用户可以上传文件并且执行它。例如,如果他上传.jsp文件,当用户调用它时,由服务器执行
我的问题是。如何解决?
您不得添加'C:\ ar chivos'作为上下文。相反,添加一个只从文件系统中复制文件的servlet,从例如映射*本身*。 'http:// yourserver/archivos/aaa/bbb.pdf'到'C:\ archivos \ aaa \ bbb.pdf'。搜索* java文件servlet *将提供许多解决方案。 –