java - 如何清理和验证用户输入以通过 Checkmarx 扫描

标签 java security code-analysis static-code-analysis checkmarx

我有一个从客户端接收字符串的端点,如下所示:

@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 扫描?

最佳答案

HtmlUtils来自 spring-web 的工作完成了:

HtmlUtils.htmlEscape(x)

Maven 依赖:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>5.1.7.RELEASE</version>
</dependency>

关于java - 如何清理和验证用户输入以通过 Checkmarx 扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31984962/

相关文章:

java - 如何创建两个 java webapps 和 mutualize jar dependencies & others files?

java - 存储在垃圾收集过程中的引用对象的 "age threshold"存储在哪里?

javascript - 在 IE 中打开时 Iframe 内的导航问题

java - 如何获取 Weblogic 安全领域内 OID/OAM 中可用的所有用户属性?

c# - 如何解析CA1502 : Avoid excessive complexity?

c# - "DoesNotReturn"属性的编译器错误

java - 为什么 Maven 依赖排除不会导致编译错误?

java - 用于任意可克隆数据的线程安全持有者

vba - 保护 Excel 工作簿(使用 VBA)免于与不同数据重复使用

c# - CA2204 警告在字符串文字中提及类型名称