网站漏洞检测统计口径不一致,通常不是工具出错,而是两次统计的“计数对象”不同:一个按漏洞实例计数,一个按漏洞类型计数;一个按扫描批次汇总,一个按去重后的问题计数。处理顺序是先把口径写成可核对的定义,再用同一批原始数据重新汇总,最后才比较差异。若定义没统一就直接对比数量,结论多半无效。
假设某次检测中,同一段代码在三个页面被引用,扫描器报了三条记录。按实例统计是3,按类型去重是1,按受影响URL统计是3,按风险等级汇总又可能只算1条高危。四个数字都能叫“漏洞数”,但含义完全不同。
这四项只要有一项不同,两个数字就不可直接比较。判断方法很简单:让双方各写一句“我统计的是……”,如果句子不能一一对应,差异就来自口径而非检测能力。
第一次接触这个问题,不必先争论谁的数字对。可以先做一张最小口径表,把每次统计都按同一格式记录:
把这张表附在报告首页,后续任何人复算都能得到同一个数。若暂时无法统一,就先保留两套数字并分别标注口径,不要合成一个“综合漏洞数”。
口径不一致时,最有效的证据链是“总数—明细—差异项”。具体做法是导出两份原始明细,按同一去重键排序,逐条比对。常见差异项有三类:
举例来说,假设A报告显示40条,B报告显示25条。逐条比对后发现,A含15条同一规则在不同页面的重复命中,B按规则去重后合并为1条,另有若干条状态差异。此时应先确认去重规则,而不是断言哪份报告漏报。这里的数据仅为说明方法而假设,不代表任何真实扫描结果。
如果口径已经一致、明细仍对不上,再检查三类技术性原因:扫描目标是否包含相同子域和端口、认证会话是否一致、规则库版本是否相同。这三项属于“可能原因”,需要逐项验证后才能确认,不能直接归因于某一项。
验证时每次只改一个变量:固定目标与规则版本,只切换登录状态重扫;或固定登录状态,只调整去重键重新汇总。能稳定复现的差异才算已定位原因,不能复现的先记为待观察项。
下一次汇总前,先花十分钟把计数单位、去重键、纳入条件和截止时间写成一句话,附在报告开头,再让所有数字都从同一份明细导出。这样即使两次结果不同,也能直接指出差异出在哪一项,而不是反复争论总数。