我在 Checkmarx 扫描中收到警报,提示 saveAll() 调用中的对象绑定不安全。 checkmarx 中的确切单词是
The orderReqDto at src/main/java/com/coppel/omnicanal/coppelpay/controller/ValidarClienteController.java in line 69
may unintentionally allow setting the value of saveAll in validarPlazosCliente, in the object
src/main/java/com/coppel/omnicanal/coppelpay/bussines/CustomerValidationBussines.java at line 392.
知道如何重写代码,以便 checkmarx 停止抱怨。
我的代码:
@PostMapping("/pos/num-cliente")
public BaseResponseDTO<CustomerValidationRespDto<PlazoDto>> validateCustomerPosNumCliente(@Valid @RequestBody NumClienteReqDto orderReqDto, HttpServletRequest req) throws Exception {
// * Obtiene data de JWT de interceptor
JwtDto data = (JwtDto) req.getAttribute(DATA_DTO);
return compraBussines.validarCliente(orderReqDto.getNumCliente(), null, data, null);
}
412. clientePlazosDao.saveAll(plazosValidos);
需要修复此漏洞。
Checkmarx 正在标记所有批量分配的对象,以确保不会意外暴露公共设置器或构造函数。
要避免此错误,您可以
检查所有批量分配的对象,以确保此方法不会无意中暴露任何公共 setter 或构造函数。 确保在需要时,应用程序代码正确限制对属性和对象的访问。 考虑从对象绑定方法过渡到更精细的方法,其中仅显式设置值,以防止意外地暴露意外的值以被隐式更改。
如果您知道您的保险箱,并且它是 FP,请从预设中删除查询。它的漏洞较低。