Checkmarx正在为我的Controller类中的以下方法提供XSS漏洞。
具体来说:该元素的值(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对象具有很多String属性,我只是想知道是否有一种优雅的方法可以对它们进行编码以防止这种漏洞。

最佳答案

您需要从其中删除转义字符,例如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")
        )));

07-24 16:08