Снимать разрешения выполнения яркий файл ee Java - Tomcat

Я пробую делать Веб с Java США, которые позволяют пересылать файл в сервер и потом загружать это. Я добился обеих вещей: Пересылать файл в сервер Java ee

Однако, у меня есть ужасная пустота безопасности. Файлы зазнаются в C:\archivos Pero si subo un archivo .jsp, из-за ej, он выполнен сервером. (Когда могут реализовывать любой тип консультаций!). То, что он нуждался бы в том, чтобы узнать, является правильным способом пересылать файл, или издавать разрешения, для того, чтобы это не произошло. Для того, чтобы смогли загружаться файлы, но не выполнять.

0
задан 13.04.2017, 16:00
1 ответ

Я нашел решение. нужно делать servlet, который брался бы за то, чтобы загружать файл. Для этого нужен перемещать path servlet.xml, что добавил раньше.

Подниматься:

    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.

    if(!fileName.isEmpty()){
        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();
    }
    return null;
}

Post соединение:

if(adjunto!=null){
                String filename=adjunto.substring(10); //La longitud de /archivos/
                String borrar="<a href=borrarServlet?codigo="+codigo+"&comentario="+idComentario+"&file="+filename+"><img width=\"16\" src=images/borrar.png></img></a>";
                comentarios+="<tr><td>"+fecha+"</td>"+"<td>"+texto+"<br><a class=\"adj\" href=."+adjunto+">Descargar archivo</a></td><td>"+borrar+"</td></tr>";
            }

Загружается:

String filename = URLDecoder.decode(request.getPathInfo().substring(1), "UTF-8");
File file = new File("/archivos", filename);
response.setHeader("Content-Type", getServletContext().getMimeType(filename));
response.setHeader("Content-Length", String.valueOf(file.length()));
response.setHeader("Content-Disposition", "inline; filename=\"" + file.getName() + "\"");
Files.copy(file.toPath(), response.getOutputStream());
1
ответ дан 24.11.2019, 13:04

Теги

Похожие вопросы