java - Java项目中的信任边界冲突漏洞
问题描述
对于下面提到的代码,我在CheckMarx 报告中得到了 Trust Boundary Violation 。
错误描述 - 方法“getResponse”从元素请求中获取用户输入。此元素的值在未经过适当清理或验证的情况下流经代码,最终存储在服务器端会话对象,在 'parseRequest' 方法中。**
代码 -
@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 违规应该消失。
推荐阅读
- android - 使用 Arrow-kt IO.fx 泄漏 Android UI{}
- reactjs - React 路由问题(通过参数传递 ID)
- go - 为什么网络浏览器没有设置 cookie?
- symfony - 序列化类“App\Entity\User”的对象时检测到循环引用(配置限制:1)
- ruby - 在尝试从 NYT 烹饪网站检索标签时需要帮助使用 Nokigiri
- node.js - Pdfkit 输出乱码
- javascript - 是的模式验证:在方法 '.matches()' 中排除某个模式
- android - 在 android studio、linux 中添加图标时配置图像资产显示错误
- javascript - 将主题中的 CSS 和 JS 文件合并到 Angular8 项目中的完美正确方法是什么
- spark-ar-studio - SparkAR studio - animation.driver.OnCompleted() 应该如何实现?