对于以下提到的代码,我在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是数字,请立即将其转换为整数/长整数,如下所示:
int dataIDasNumber = Integer.parseInt(dataID);
并像int / long这样使用它:
inputRequest.setId(dataIDasNumber);
ThreadContext.put("ID", dataIDasNumber);
然后,您不需要这样做:
Pattern.matches...
并且您的checkmarx违规行为应该消失。