我正在查看我的项目的代码分析报告,并在null dereference上遇到了很多问题。
我们总是将对象声明为null。我们说
String str = null;
使用条件运算符执行业务逻辑
if(a.equals(b)){s =“Assigned”; }
然后将字符串赋值给值对象。
form.setString(STR);
我们在代码库中的每个地方都遵循类似的编码实践,并且在代码库中处理不完全无效。
但我们仍然遇到“null dereference”安全漏洞问题。我不认为这是一个有效的漏洞,因为我们在从VO访问任何变量之前不进行空检查。
可能有一个有效的参数,如果业务逻辑没有执行并在您的VO中设置null会发生什么。但它在访问之前处理得很好。
此外,
初始化空字符串(或任何原始数据类型)而不是null(使用等效项)时没有任何问题。如果我添加空检查而不是非空,这将有效。但是,集合框架呢?如果我初始化一个数组列表并实例化它(而不是null),它会为列表分配内存吗?
列出strList = new ArrayList();
请告知,如果我可以从报告中忽略这些空的解除引用问题,或者我应该通过实例化它来处理它们。
答案 0 :(得分:0)
我和一位安全架构师谈过。如果可以证明代码段的这一部分不会产生空指针异常,则可以在工具中禁止此问题。但是需要适当的编码实践来避免在这种不需要的情况下使用null。