本文介绍了Checkmarx-如何验证和清理HttpServletRequest .getInputStream以通过checkmarx扫描的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下是checkmarx问题的详细信息无限制的文件上传

Following are checkmarx issue detailsUnrestricted File Upload

源对象:req(第39行)

Source Object : req (Line No - 39)

目标对象:getInputStream(行号-41)

target Object : getInputStream (Line No -41)

    public class JWTLoginFilter extends AbstractAuthenticationProcessingFilter
{

    //...
38 public Authentication attemptAuthentication(HttpServletRequest req, HttpServletResponse res)
39            throws AuthenticationException, IOException, ServletException
40    {
41        Entitlements creds = new ObjectMapper().readValue(req.getInputStream(), Entitlements.class);

        return getAuthenticationManager().authenticate(
                new UsernamePasswordAuthenticationToken(creds.getId(), "", Collections.emptyList()));
    }
    //...
}

请求对象在checkmarx工具中突出显示-

request objects get highlighted in checkmarx tool -

如何正确验证,过滤,转义和/或编码用户可控制的输入以通过Checkmarx扫描?

How do I properly validate, filter, escape, and/or encode user-controllable input to pass a Checkmarx scan?

推荐答案

有时,我们可以使用间接级别的技巧来欺骗该工具.您可以尝试下面的方法,看看是否可以解决您的问题,

Sometimes, we can trick the tool with a level of indirection. Can you try the below and see if that fixes your problem,

替换:

Entitlements creds = new ObjectMapper().readValue(req.getInputStream(), Entitlements.class);

使用

Entitlements creds = new ObjectMapper().readValue(req.getReader().lines().collect(Collectors.joining(System.lineSeparator())), Entitlements.class);

这篇关于Checkmarx-如何验证和清理HttpServletRequest .getInputStream以通过checkmarx扫描的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-09 16:12