Java null 取消引用 - 微焦点安全漏洞

标签 java security null dereference microfocus

我正在查看项目的代码分析报告,发现了很多关于空取消引用的问题。

我们总是将对象声明为 null。这么说吧

字符串 str = null;

使用条件运算符执行业务逻辑

if (a.equals(b)) { s = "已分配"; }

然后将字符串分配给值对象。

form.setString(str);

我们在代码库中的任何地方都遵循类似的编码实践,并在整个代码库中完美地处理了非空检查。

但我们仍然遇到“null dereference”安全漏洞问题。我不认为这是一个有效的漏洞,因为我们在从 VO 访问任何变量之前不会进行空检查。

可能有一个有效的参数,如果业务逻辑不执行并在 VO 中设置 null 会发生什么。但在访问之前就处理好了。

另外,

我在初始化空白字符串(或任何原始数据类型)而不是 null(具有等效值)时没有任何问题。如果我添加空检查而不是非空检查,这将起作用。但是,集合框架怎么样?如果我初始化一个数组列表并实例化它(而不是 null),它会为该列表分配内存吗?

列表 strList = new ArrayList();

请告知,我是否可以忽略报告中的此类空解除引用问题,或者我应该通过实例化它们来处理它们。

最佳答案

我与一位安全架构师进行了交谈。如果您可以证明这部分代码片段不会产生空指针异常,则可以在工具中抑制此问题。但是需要适当的编码实践来避免在这种不需要的情况下使用 null。

关于Java null 取消引用 - 微焦点安全漏洞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49778774/

相关文章:

c# - 基于HttpListener的自托管站点——如何处理鉴权?

.net - 最安全的软件许可方式

python - Python 中的“C 风格”字符串

c# - C# 中的 null 速记?

java - DynamoDB 排序键的多重比较条件?

java - 这里需要显式解码吗?

java - 如何使用 apache POI 在 docx 中插入当前日期字段

c# - 当参数为 null 时,null 安全哈希码函数返回什么值比较好?

java - Android 广播接收器仅处于待机状态或应用程序不活动状态

java - 获取源代码//文件读取器//返回空列表