Исправить XSS-уязвимости Checkmarx

Checkmarx дает XSS-уязвимость для следующего метода в моем классе Controller. В частности: значение этого элемента (ResultsVO) затем проходит через код без надлежащей очистки или проверки и в конечном итоге отображается пользователю в методе:

 @RequestMapping(value = "/getresults", method = RequestMethod.POST, produces = "application/json")
    @ResponseBody
    public ResultsVO getConfigResults(@RequestBody ResultsVO resultsVO, HttpServletRequest request)
            throws OverrideApplicationException {
        String loggedUserId = request.getHeader("USER");
        return resultsService.getConfigResults(resultsVO, loggedUserId);
    }

Объект ResultsVO имеет много строковых атрибутов, и мне просто интересно, есть ли элегантный способ их кодирования, чтобы предотвратить эту уязвимость.


person DenairPete    schedule 10.02.2020    source источник
comment
Отвечает ли это на ваш вопрос? Как предотвратить использование XSS в Spring MVC?. Поскольку вы просто спрашиваете о санации string.   -  person baruchiro    schedule 11.02.2020


Ответы (2)


Вам нужно удалить из него escape-символы, такие как сценарии Html/Js. Вам нужно использовать Jsoup и библиотеку apache-commons, чтобы избежать кода Html/Javascript.

Пример:

    String loggedUserId = Jsoup.clean( 
        org.apache.commons.lang.StringEscapeUtils.escapeHtml(
        org.apache.commons.lang.StringEscapeUtils.escapeJavaScript(  
          request.getHeader("USER")
        )));
person GnanaJeyam    schedule 09.03.2020
comment
Вопрос по поводу результата ВО потока - который не санировать. Ваш ответ будет полезен, только если кто-то захочет дезинфицировать строку - person StackOverFlow; 01.10.2020

Попробуйте это - это сработало для меня :)

resultsVO = SecurityUtil.sanitizeObject(resultsVO, ResultsVO.class);

public static <T> T sanitizeObject(Object object, Class<T> classOfT){
        Gson gson = new Gson();
        String json = Jsoup.clean(StringEscapeUtils.escapeHtml4(gson.toJson(object)), Whitelist.basic());
        return gson.fromJson(json, classOfT);
    }

Checkmarx пропустит указанную вами проблему. :)

Надеюсь, это поможет - Голосуйте за, если сработало

person StackOverFlow    schedule 01.10.2020