我的应用程序 Spring Boot 3 Mvc 有以下控制器方法:
@RequestMapping(value = "/addToCart", method = RequestMethod.POST)
public String addToCart(WebRequest webRequest, HttpServletRequest request) throws Exception {
String[] quantity= request.getParameterValues("qty");
String[] itemNumbers = request.getParameterValues("itemNumber");
return addToCartHelper(webRequest, request, qtys, itemNumbers);
}
VeraCode 指向“return addToCartHelper(webRequest, request, qtys, itemNumbers);”线上的 CWE-73 漏洞
CWE-73:文件名或路径的外部控制:说明链接
在“addToCartHelper”方法中,我访问 MongoDB 存储库并生成重定向的视图 URL。
我不与文件系统交互。
您能告诉我如何修复该漏洞吗?
从安全角度来看,您的代码存在几个问题,但首先也是最重要的是,您在使用参数之前甚至没有验证它们。 当收到用户的输入时,您总是
1.) 断言它是恶意的 2.) 就这样对待它
不清楚为什么您会收到路径漏洞标志,也许看看如果您发送
<url>/addToCart/../../
并看看会发生什么? 也许在你的应用程序的根上下文中你没有防御目录遍历这更像是基于CWE-73的味道。
但是可以肯定的是,即使您清除了 CWE-73,您也没有验证参数值是
1.) 在有效范围内
//String.length > 0 && String.length <= Integer.MAX_VALUE
让您开始
2.)实际上是数字(因为这就是你所期望的)
// [0-9]+
之后,在将该数据传递到数据库之前,请确保它们使用参数化查询(或 MongoDB 中的任何等效查询)。
无论如何,我都会使用我链接的测试指南来回答遍历问题,然后确定它是否有效。 您还可以对正在运行的 Web 应用程序实例使用 DirBuster 等工具来测试并查看是否未正确处理路径。