下面是checkmarx问题的详细信息无限制文件上传
来源: req (第39行)
目标目标: getInputStream (第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工具中突出显示-
如何正确验证、筛选、转义和/或编码用户可控输入以通过Checkmarx扫描?
发布于 2020-10-07 17:49:59
这对我有用- checkmarx通过了这个高漏洞
我使用了@ comment和@tgdavies评论的组合。
@Override
public Authentication attemptAuthentication(HttpServletRequest req, HttpServletResponse res)
throws IOException
{
int len = req.getContentLength();
len = Integer.parseInt(Encode.forHtml(String.valueOf(len)));
String type = req.getContentType();
type = Encode.forHtml(type);
Entitlements creds;
if(len == INPUT_LENGTH && type.equals(MIMETYPE_TEXT_PLAIN_UTF_8)) {
creds = new ObjectMapper().readValue(req.getReader().lines().collect(Collectors.joining(System.lineSeparator())), Entitlements.class);
}else{
creds = new Entitlements();
}
return getAuthenticationManager().authenticate(
new UsernamePasswordAuthenticationToken(creds.getId(), "", Collections.emptyList()));
}发布于 2021-08-14 09:46:58
下面的解决方案为我工作的checkmarx扫描。在存储xss的情况下,我使用HtmlUtils.escapeHtmlContent(String)
如果我们想净化@requestbody中使用的bean类,我们必须使用
Jsoup.clean(StringEscapeUtils.escapHtml4(objectMapper.writeValueAsString(object)), Whitelist.basic());这为我解决了checkmarx漏洞问题。
发布于 2020-10-06 12:24:51
有时,我们可以通过一定程度的间接欺骗工具。你能不能试试下面的方法,看看能不能解决你的问题,
取代:
Entitlements creds = new ObjectMapper().readValue(req.getInputStream(), Entitlements.class);带着,
Entitlements creds = new ObjectMapper().readValue(req.getReader().lines().collect(Collectors.joining(System.lineSeparator())), Entitlements.class);https://stackoverflow.com/questions/64152836
复制相似问题