问题描述
Checkmarx对于下面的代码行,报告问题Un受控的内存分配。
ObjectNode values = objectMapper.readValue(request.getInputStream(),ObjectNode.class);
正在调用给定请求的用户在系统中得到授权。我无法决定系统应允许的合理流大小。有时甚至可能是60 MB,但我无法预测是否有人要上传80MB的文件。 我知道我可以尝试捕获OutOfMemoryError,但这通常是非常不好的做法。
处理此问题的正确方法是什么?
解决方法
如果您的代码允许分配任意数量的内存,则Checkmarx标记的结果是正确的。 如果文件仅来自受信任的来源/用户,则问题不是很严重,但仍应解决。
很明显,您无法准确预测可以上载的文件的最大大小,但是没有验证和限制最大大小不是一个好习惯。 尝试估计什么大小仍然适合用户上传,并使用10倍大小限制作为将来的证明。确保测试您的系统,并查看上传如此大文件是否有不利影响。
祝你好运!