先给结论:空值通常表示“这项没有拿到可判断的数据”,零值表示“拿到了数据,结果是零”。两者在后续动作上完全不同——空值需要先补齐数据来源,零值才可以直接进入风险判断。下面用一个假设情境把决策过程走一遍。
假设你负责一个旧系统下线项目:业务方已经确认不再新增功能,但还有一批历史页面和接口需要保留一段时间。你用网站漏洞扫描工具跑了一轮,报告里同时出现两类结果:某些检查项显示为空,某些检查项显示为 0。如果直接把两者都当成“没问题”,退出决策就会建立在错误前提上。
更稳妥的做法是先把结果分成三堆:有数据且为零、有数据且非零、没有数据。第一堆可以暂时放行,第二堆要修或要隔离,第三堆必须先弄清“为什么没有数据”,再决定是否放行。
空值不是一种含义,它至少对应三类原因,处理方式各不相同。
区分这三类有一个低成本动作:对空值项单独重跑一次,并保留两次的原始输出。如果第二次仍然为空,且目标可达性、凭据、组件版本都能确认,那么它更可能是“不适用”;如果第二次变成有值,说明第一次只是采集失败。
零值看起来更明确,但同样要分清它是“检查完成且未发现问题”,还是“检查完成但计数口径为零”。
判断方法很直接:看这个零值对应的分母是什么。如果分母是“本次扫描覆盖的目标数”,零值有意义;如果分母是“与上次相比的差值”,零值只说明没有变化,不说明没有风险。假设某接口的“新增风险数”为 0,但历史未修复项仍有 3 条,那么退出决策必须把这 3 条算进去。
在旧系统退出这类场景里,建议按下面的顺序处理,而不是按报告默认排序:
这个顺序的实际影响是:它把“看起来没问题”拆成了“已确认没问题”和“还不知道”。退出项目最怕的不是有风险,而是把未知当成安全。
无论用哪款网站漏洞扫描工具,都可以在报告导出后加一步:把每个检查项的结果标成“有值/空值”,再把空值标成“可达性、凭据、适用性”三类原因。这个动作不改变工具本身,但会改变你下一步是去补数据、去修问题,还是直接放行。具体工具对空值和零值的展示方式、字段名称和导出格式需要以你实际使用的版本为准,核对时以原始输出而不是汇总页为准。