设计单变量改动的核心是:每轮只改一个会影响检测结果的变量,其余条件冻结,并为这一轮预先写明交付物、验收标准和回退方式。对网站挂马检测来说,这个变量可以是检测范围、比对基准、扫描入口或判定规则中的一项,不能同时调整。这样做的目的不是追求流程好看,而是让时间和人手有限时,能判断出“结果变化到底由什么引起”,避免把误报、漏报和真实挂马混在一起。
先明确本轮要交付什么,再决定收集什么。挂马检测的常见交付结果有三类:一份可疑文件清单、一份确认被篡改的页面清单、一份处置建议。三者的资料要求不同。
如果只有当前文件、没有可信基准,那么单变量改动只能围绕“发现异常特征”设计,例如异常代码片段、异常外链、异常跳转,而不能直接断言文件被篡改。资料不足时,先补基准,再谈判定。
挂马检测里可单独调整的变量通常包括:
每轮只选其中一项改动。例如本轮只把“检测范围”从首页扩展到全站,其他三项保持不变。如果可疑数量明显上升,说明此前范围过窄;如果数量不变,说明问题可能不在未覆盖的目录。这个结论只在其他变量确实冻结时才成立。
单变量改动最容易失败的地方,是执行过程中顺手改了别的条件。因此每轮开始前要写清三件事:谁负责改、谁负责记录、用什么结果判定通过。
验收时不要只看总数。要抽查若干条结果,确认它们属于同一类原因。若可疑项里既有真实篡改,也有正常缓存文件,说明判定规则仍需单独一轮调整,不能把这一轮直接当作结论。
假设某站首页出现异常跳转,时间和人手只够做一轮检测。可以这样设计:
如果定位成功,下一轮再单独调整判定规则,检查是否还有同类代码未被特征覆盖。如果定位失败,说明问题可能来自数据库输出或外部调用,下一轮再单独改扫描入口。这样每轮只回答一个问题,结论可以追溯。
当站点已经确认正在被持续利用、存在数据泄露或访问被大规模劫持时,优先做隔离和止损,而不是继续做归因实验。单变量改动适合排查阶段,用来分清原因;不适合替代应急响应。另一个不适用的情况是没有任何可信基准,此时应先建立基准,否则每轮改动都缺少可比对象。
下一步可以选一个当前最影响判断的变量,写下本轮交付结果、冻结项和验收标准,再开始执行。执行后保留改动前后的记录,供下一轮对照。