Неограниченная загрузка файлов - выдается CheckMarx - PullRequest
0 голосов
/ 31 января 2019

Исправлена ​​ошибка, сообщаемая для checkMax.Проблема заключается в неограниченной загрузке файлов.Файл, который он загружает с помощью сервлетов.

Я пытаюсь решить проблему проверки расширения файла, проверки типа содержимого "text / plain" и проверки, если запрос состоит из нескольких частей, а метод запроса - POST.Но проблема не решена.

Метод фрагмента POST в моем сервлете:

public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
    try {   
        if (stream2file(req) == isValidateRequest(req)) {           
                InputStream reqIS = getInputStreamReq(req);
                int reqSize = req.getContentLength();
                try {
                    req.getInputStream().mark(req.getInputStream().available());
                } catch (Exception e) {
                    LOGGER.error("SEVERE: Error ", e);
                }
        }

    } catch (Exception e) {
            LOGGER.error("Error File txt ." + e);
        }       
}   

public static boolean stream2file (HttpServletRequest request) {
   boolean isFileValid =  false;

    try {
        List<FileItem> multiparts = new ServletFileUpload(
                                 new DiskFileItemFactory()).parseRequest(request);

        for(FileItem item : multiparts){
            if(!item.isFormField()){
                String name = item.getName();
                String fileSuffix = FilenameUtils.getExtension(name);
                LOGGER.error("Archivo con extension: " + fileSuffix);

                if(fileSuffix.equals("txt")) {
                    isFileValid= true;
                     LOGGER.info("  file txt  valid: " + fileSuffix);
                }
            }
        }

    } catch (Exception ex) {
        LOGGER.error("File is not valid." + ex);
    }         
    return  isFileValid;
}

private static boolean isValidateRequest(HttpServletRequest request) {       

    return (isValidarContentType(request) == isMultipartRequest(request));
}

private static boolean isValidarContentType(HttpServletRequest request) {
     boolean isValido =  false;
     final String[] VALID_CONTENT_TYPE = { "text\/plain", "text\/html", "text\/xml", "application\/xhtml+xml", "application\/xml"};

     final String contentType = request.getContentType();
     for (String whiteContent : VALID_CONTENT_TYPE) {
        if(whiteContent.equals(contentType)) {
            isValido =  true;
        }else {
            isValido =  false;
        }
    }

     return isValido;
}
private static boolean isMultipartRequest(HttpServletRequest request) {     
    return GssClsConstantes.REQUEST_METHOD_POST.equalsIgnoreCase(request.getMethod())
            && request.getContentType() != null
            && request.getContentType().toLowerCase()
                    .startsWith(GssClsConstantes.CONTENT_TYPE_MULTIPART);
}

Версия сервлета: 2.4

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...