Java项目中存在信任边界冲突缺陷



对于下面提到的代码,我在CheckMarx报告中得到了信任边界冲突。

错误描述-方法"getResponse"从元素请求中获取用户输入。该元素的值在代码中流动,而没有经过适当的净化或验证,最终以"parseRequest"方法存储在服务器端Session对象中。**

代码-

@Context
HttpHeaders httpHeader;
void parseRequest(SomeRequestType inputRequest) {
HashMap<String, Data> requestData = inputRequest.getRequestData(httpHeader);
if (requestData != null) {
if (Strings.isNullOrEmpty(inputRequest.getId())) {
Data data = requestData.get("data");
var dataID = data.getID();
if ((dataID != null) && Pattern.matches("[0-9]+", dataID)) {
inputRequest.setId(dataID);
ThreadContext.put("ID", dataID);
}
}
}
}

我在下面的行中得到了checkmarx漏洞,因为它没有经过适当的消毒或验证

ThreadContext.put("ID", dataID);

有人能帮我,如何正确消毒上面的线路吗。

如果您确信dataID是一个数字,请立即将其转换为integer/long,如下所示:

int dataIDasNumber = Integer.parseInt(dataID);

在这里像int/long一样使用:

inputRequest.setId(dataIDasNumber);
ThreadContext.put("ID", dataIDasNumber);

那么你不需要这样做:

Pattern.matches...

你违反checkmarx的行为应该消失。

最新更新