判断数据量是否够用,不看“扫了多少个文件”这个绝对数字,而看它能否支撑你要交付的结论:哪些页面被篡改、恶意代码从哪来、是否已清除、会不会复发。只要现有数据无法回答其中一个问题,就说明数据量不够,需要补充采集范围或延长观察时间。
使用网站被挂马检测工具前,先写下这次要交付什么。常见交付物有三类:一份受影响页面清单、一份恶意代码样本与位置说明、一份清除后的复查记录。三类交付物对应的数据要求不同。
如果工具只给出“发现N处风险”的汇总数字,却没有对应的URL、文件路径和时间戳,这个数据量对交付没有帮助,属于不够用。
总数容易误导。扫描10万个文件听起来很多,但如果网站实际有30万个文件,覆盖率只有三分之一,遗漏的部分可能正是被挂马的位置。判断覆盖率要核对三项:
.php、.js、.html、模板文件和上传目录。只扫网页不扫脚本,通常不够。假设一个站点有5000个页面,工具只返回800个页面的检测结果,即使这800个页面全部正常,也不能得出“网站没有被挂马”的结论。这是覆盖率不足,不是数据量够用。
数据量够用的一个标志,是能把现象收敛到可验证的原因。例如页面被插入跳转代码,可能原因包括:模板文件被改、数据库内容被注入、外部JS被替换、服务器配置被篡改。每种原因需要的证据不同。
如果现有数据只能说明“页面有异常代码”,却无法指向上述任何一条具体路径,说明数据还不够定位原因,只能算初步发现。
第一次接触这个问题,可以按下面顺序操作,每一步都产出可核对的结果:
<script>或隐藏链接。如果抽查发现问题而工具未报,说明数据不可信。判断结果的标准很简单:能回答“哪里有问题、为什么、是否已清除、会不会复发”这四个问题,数据量就算够用;有一个答不上来,就继续补充。
上述方法适用于自建站、CMS站点和常规虚拟主机环境。如果站点使用CDN或对象存储,部分文件不在本地,扫描范围要相应调整。常见误判有两种:一是把工具报告的“风险数量”当作严重程度,数量多不一定影响大;二是把一次扫描无结果当作安全,缺少时间维度的复查,无法排除延迟注入。
下一步建议:先写下这次要交付的具体结论,再对照工具输出字段逐项核对。缺什么字段,就补什么数据,而不是反复增加扫描次数。