首页 > 解决方案 > 如何修复 checkmarx 信任边界违规

问题描述

我从用户输入请求中保留一个值。Checkmarx抱怨存在Trust Boundary Violation

从元素请求中获取用户输入。此元素的值在未经过适当清理或验证的情况下流经代码,最终存储在服务器端 Session 对象中

我也在网上找到了这个帖子。接受的答案是验证它。

好的,验证和清理

private String getValidSearchPath(String searchPath) {
    if (!searchPath.matches("^[0-9a-zA-Z]+$")) { //using regex to do validation
        throw new RuntimeException("Unacceptable jsonPath " + searchPath);
    }
    if (StringUtils.isBlank(searchPath)) {
        return "";
    }
    return searchPath.substring(0,0); // I intentionally put 0,0 here, which returns "" 
}

...
//pseudo code
String searchPath = getValidSearchPath(request.get(...));
persistSearchPath(searchPath);

然后我再次运行Checkmarx
你猜怎么着?我仍然得到信任边界违规。有人可以告诉我如何解决吗?我已经返回空字符串,Checkmarx仍然抱怨我不正确地使用用户输入的值。

标签: javaregexcheckmarxsecure-coding

解决方案


Checkmarx 在代码中搜索一组验证和函数,其中一个是ESAPI 库。改用 ESAPI.getValidInput 方法进行验证:

Validator.SafeString=^[0-9a-zA-Z]+$;

ESAPI.validator().getValidInput("Search Path", searchPath , "SafeString", maxLength, allowNull);

推荐阅读