Fortofy扫描安全漏洞解决——Null Dereference (Code Quality, Control Flow)空指针

问题描述:
​      如果不符合程序员的一个或多个假设,则通常会出现 null 指针异常。如果程序明确将对象设置为 null,但稍后却间接引用该指针,则将出现 dereference-after-store 错误。此错误通常是因为程序员在声明变量时将该变量初始化为 null 所致。
      空指针问题是Fortofy安全漏洞中最容易解决的问题,不同的代码触发空指针的方式不同,本篇文章演示几个常见的空指针及解决思路。


问题代码1 对null数据进行操作导致空指针异常:

//查询数据库获取Map类型数据
Map<String, String> ruleMap=new HashMap<>();
Map<String, Object> map =jdbcTemplate.queryForMap(sql, bussId, materials, userId, orgId);
if(!map1.isEmpty()){
    for (Map.Entry<String, Object> obj : map.entrySet()) {
           //这行代码会被扫描出空指针,如果obj的value为空,那么null.toString()就会空指针异常
           ruleMap.put(obj.getKey(),obj.getValue().toString());
       }
}

解决方案:

//查询数据库获取Map类型数据
Map<String, String> ruleMap=new HashMap<>();
Map<String, Object> map =jdbcTemplate.queryForMap(sql, bussId, materials, userId, orgId);
if(!map1.isEmpty()){
    for (Map.Entry<String, Object> obj : map.entrySet()) {
           //提前判断obj的value值是否为空,如果是空则不做toString,直接赋值即可
            String mapValue=obj.getValue()!=null?obj.getValue().toString():null;
           ruleMap.put(obj.getKey(),mapValue);
       }
}

问题代码2 调用空对象中方法触发空指针:

JSONObject obj = null;
StringBuffer objJSON = new StringBuffer("。。。。。。。");
// 转换成JSONObject对象
obj = JSON.parseObject(objJSON.toString());
//obj为null触发空指针
obj.put("sort", sort);

解决方案:增加非空判断

if(obj!=null){
   obj.put("sort", sort);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙城桥少

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值