恶意代码检测的问题优先级不能按“发现数量”排,而应按可利用性、影响范围、数据敏感度和修复成本排。对已有页面或项目做改进时,最关键的一步是先建立一份可核对的证据清单,再按“正在被利用 > 可被远程触发 > 需要交互才能触发 > 仅信息泄露 > 代码风格问题”的顺序处理。下面按准备、实施、验证、维护四个阶段展开。
拿到扫描器、人工审计或日志告警的结果后,不要直接按工具给出的“高危/中危/低危”排序,因为不同工具对同一现象的评级口径不同。先为每条问题补齐四项信息:
这一步的结果是一张问题表,而不是一个分数。只有把“可能原因”和“已经定位的原因”分开,后续排序才不会把猜测当成事实。
排序时逐条打分,不必追求精确数值,关键是保持同一套判断标准。建议按以下顺序比较:
一个可执行的判断例子:假设某项目同时发现“页面输出未转义”和“上传目录存在可疑脚本”。前者需要构造输入才可能触发,后者如果目录可被外部访问并执行,则可能直接运行恶意代码。按上述顺序,先处理上传目录的可疑脚本,再处理输出转义。这里的“可疑脚本”是否真能执行,需要用访问测试和文件权限检查确认,不能仅凭文件名判断。
修复后不要只看扫描器是否不再报同一行。验证要回到准备阶段记录的触发条件,逐项检查:
如果验证结果与预期不符,应把问题重新标为“未关闭”,而不是降级处理。验证通过的标准是触发路径被切断,而不是告警数量下降。
恶意代码检测不是一次性任务。把上述四个维度固化成检查项,每次新增告警时按同一标准归类,可以避免每次重新争论。维护时重点做两件事:一是定期复核已关闭问题的触发条件是否仍然成立,例如依赖升级或配置变更后旧路径是否重新开放;二是记录每条问题的处理依据,便于后续同类问题快速判断。
下一步可以从现有问题表中挑出三条,分别标注触发条件、证据来源和影响对象,再按本文顺序重新排列。排序完成后,先处理其中“已有日志证据且可远程触发”的那一条。