如何解决Checkmarx的问题Unmanaged_Memory_Allocation

问题描述

Checkmarx对于下面的代码行,报告问题Un受控的内存分配。

ObjectNode values = objectMapper.readValue(request.getInputStream(),ObjectNode.class);

正在调用给定请求的用户在系统中得到授权。我无法决定系统应允许的合理流大小。有时甚至可能是60 MB,但我无法预测是否有人要上传80MB的文件。 我知道我可以尝试捕获OutOfMemoryError,但这通常是非常不好的做法。

处理此问题的正确方法是什么?

解决方法

如果您的代码允许分配任意数量的内存,则Checkmarx标记的结果是正确的。 如果文件仅来自受信任的来源/用户,则问题不是很严重,但仍应解决。

很明显,您无法准确预测可以上载的文件的最大大小,但是没有验证和限制最大大小不是一个好习惯。 尝试估计什么大小仍然适合用户上传,并使用10倍大小限制作为将来的证明。确保测试您的系统,并查看上传如此大文件是否有不利影响。

祝你好运!