Fortofy扫描安全漏洞解决——Null Dereference (Code Quality, Control Flow)空指针
2023-12-21 16:42:09
问题描述:
? ? ? ?如果不符合程序员的一个或多个假设,则通常会出现 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);
}
文章来源:https://blog.csdn.net/weixin_52536274/article/details/135131166
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!