被删除页面若在下一次扫描前没有把“删除前状态”冻结成可比对的快照,历史对比就会把它当成从未存在过,后续趋势、基线或回归判断都会失真。保留的关键不是把旧报告全部堆起来,而是把删除页面的身份、删除时点、删除前最后一次有效观测值三者绑定,并让它们在新扫描结果里仍可被识别为“已移除”而不是“缺失”。
同一个页面在检测软件里可能有三层记录:URL 条目、该 URL 的检测结果、以及结果中的具体漏洞或配置项。删除动作可能只删掉 URL 条目,也可能只清空结果,还可能只是页面返回 404 而条目仍在。三层混在一起时,历史对比最常见的结果是“这条记录消失了”,而不是“这个页面被删除了”。
可行的做法是给每层分别设定保留策略:URL 条目保留身份和时间戳,检测结果保留最后一次有效观测,漏洞项保留其生命周期状态。这样即使页面下线,历史对比仍能回答“它在被删时是什么状态”。
如果历史对比依赖“记录是否存在”,删除就不可逆地抹掉了信息。更稳的做法是给记录加一个状态字段,例如 active、removed,删除时把状态改为 removed 并写入删除时间,而不是物理删除。下一次扫描若不再返回该 URL,对比逻辑就能把“状态从 active 变为 removed”识别为一次删除事件,而不是数据缺口。
需要留意的反例:如果检测软件本身按“本次扫描未发现即视为已修复”的逻辑工作,那么一个因网络波动而暂时不可达的页面,也会被写成 removed。此时历史对比会把一次抓取失败误判为删除。判断依据是看该 URL 在删除前后的连续观测:只有出现稳定的 404/410 或明确的移除标记,才适合记为删除;单次超时或 5xx 不足以支撑这个结论。
历史对比要成立,需要两个可区分的数据集:删除前最后一次有效扫描的快照,以及删除后每次扫描“该 URL 不存在”的观测记录。前者用于还原页面被删时的漏洞与配置状态,后者用于证明删除是持续的而非偶发。
如果只保留快照而不记录删除后的观测,就无法区分“页面被删了”和“扫描器这次没跑到它”;如果只记录删除后观测而丢掉快照,历史对比就失去了对比的另一端。
假设某站点有 100 个被检测 URL,其中 5 个页面被下线。若检测软件在删除时直接移除这 5 条记录,下一次扫描报告显示 95 个 URL,历史对比会得出“URL 总数下降 5”的结论,但无法说明这 5 个是被删除、被合并还是被漏扫。反之,若保留记录并把状态改为 removed,对比就能显示“总数仍为 100,其中 5 个状态为 removed”,删除事件与扫描覆盖变化被分开表达。这个例子只用于说明状态字段如何改变对比结果,不代表任何真实站点的数据。
在调整保留策略前,先对已删除页面做一次复核:用同一检测软件对其中若干 URL 重复扫描,确认返回码或不可达原因是否一致。若结果稳定,说明可以按状态字段保留;若结果在 404 与超时之间摆动,说明当前判定条件过宽,应先收紧删除判定再谈历史对比。这个动作的结果会直接决定下一步是补快照,还是先修判定逻辑。