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 *將提供許多解決方案。 –