如何清理和验证用户输入以通过 Checkmarx 扫描
2022-09-03 13:52:33
我有一个从客户端接收字符串的终结点,如下所示:
@GET
@Path("/{x}")
public Response doSomething(@PathParam("x") String x) {
String y = myService.process(x);
return Response.status(OK).entity(y).build();
}
Checkmarx抱怨说,这个元素的值“在没有经过正确清理或验证的情况经代码,最终以方法doSomething显示给用户”
然后我尝试了这个:
@GET
@Path("/{x}")
public Response doSomething(@PathParam("x") String x) {
if (StringUtils.trimToNull(x) == null || x.length() > 100) {
throw new RuntimeException();
}
x = x.replace("'", "").replace("`", "").replace("\\", "").replace("\"", "")
String y = myService.process(x);
y = y.replace("'", "").replace("`", "").replace("\\", "").replace("\"", "")
return Response.status(OK).entity(y).build();
}
但它仍然认为这是一个高严重性漏洞。
如何正确消毒或验证是否通过 Checkmarx 扫描?