先给有条件的结论:如果挂马检测工具在试验前后都没有出现预期变化,最可能的原因不是工具失效,而是试验没有真正落到被检测的页面上。要验证这一点,需要把“试验是否实施”拆成可核对的项目:检测范围是否覆盖目标页面、规则是否针对该页面生效、页面本身是否被工具成功获取。三个条件中任何一项不成立,结论就应改为“试验未实施”,而不是“检测无效”。
多个角色对同一事实理解不同时,常见分歧是:一方认为已经在页面中放入测试标记,另一方认为工具没有报警,说明工具不可靠。此时不要争论工具好不好用,而要把分歧转成三项可核对的事实。
这三项分别对应“改了什么”“测了什么”“拿到了什么”。任何一项缺失,都无法得出工具是否有效的结论。把这三项列成核对表后,分歧会从观点之争变成证据之争,下一步动作也随之明确:缺哪一项就补哪一项。
假设某页面被加入一段测试用的可疑脚本,但脚本只在登录后或特定参数下才输出。挂马检测工具以未登录状态抓取该页面,自然看不到这段脚本,于是没有告警。此时如果据此判断“工具检测不到挂马”,结论就是错的——试验内容对工具并不可见,属于试验设计问题,不是检测能力问题。
这个反例说明:即使三项核对都通过,还要再确认一个前提——试验内容在工具实际获取的响应中可见。如果不可见,应调整试验方式,让测试标记出现在工具能够获取的响应里,再重新观察。这一步不做,后续所有关于告警、基线和覆盖率的讨论都建立在错误前提上。
当预期变化没有出现时,可以按下面的顺序收集证据,逐步缩小原因范围。
这个顺序的价值在于:每一步都能独立排除一类原因。前一步不通过时,不要跳到后面去调规则或换工具,否则会把配置问题误判为能力问题。实际动作是:先固定一份改动后的页面响应作为基准,再用它和工具获取到的内容逐项对照。对照结果会直接决定下一步是修改动、修配置,还是修获取方式。
假设某站点在文章模板中加入一段测试脚本,期望挂马检测工具在下次扫描时告警。结果连续两次扫描都没有变化。按前面的核对表检查:页面响应中确实有测试脚本,检测范围包含该模板生成的页面,但工具获取到的内容是一个缓存版本,缓存时间早于改动时间。
此时合理的结论是:试验已实施,但工具获取的是旧内容,所以观察不到变化。下一步动作是让工具获取最新内容,或在确认缓存策略后再安排一次观察。这个例子中的数字仅用于说明比较方法,不代表任何真实项目的表现。关键是:缓存这个解释一旦成立,就不能再把它当作工具检测能力的证据。
把以下问题逐条回答清楚,就能判断试验是否真正实施:
如果这些问题中有任何一项无法回答,先补齐证据,再讨论工具是否有效。请求量、抓取量或告警数没有变化,本身不能单独证明试验已实施,也不能单独证明工具失效;缓存、范围、规则和获取方式都能给出合理解释。只有当改动可见、范围覆盖、获取内容一致这三个条件同时成立时,未出现预期变化才值得进一步怀疑检测规则本身。下一步动作应落在证据缺口最大的那一项上,而不是先更换工具或调整全部规则。