按页面拆分恶意代码检测问题,核心做法是:不要先问“整站是否被入侵”,而是把每个URL当成一个独立证据单元,分别记录该页面的原始响应、渲染后DOM、外部资源请求和跳转链路,再对比正常页面找出差异。只有当多个页面出现同一种差异时,才把它升级为站点级或模板级问题;如果只有个别页面异常,就应继续在该页面的内容、参数和引用资源中定位。
拆分前要保证每个页面采到的数据可以横向比较。建议对同一批URL使用相同方式采集:
采集时优先使用固定参数,例如同一User-Agent、同一地区出口、同一是否登录状态。若两次采集结果不同,说明页面存在条件性输出,这本身就是重要线索,不要急于下结论说“已经定位到恶意代码”。
把每个可疑页面拆成四层,逐层记录“正常页”和“异常页”的差异:
?id=、?from=、?debug=等。若仅特定参数触发,应检查参数是否被拼接进页面输出。这一步最关键的是先区分“所有页面共有”与“单页独有”。共有问题按模板和公共资源排查,独有问题按该页面的内容、参数和权限排查。把两者混在一起,容易把模板改动误判为单页入侵,也容易把单页注入当成全站沦陷。
发现差异后,用对照方式验证,而不是只凭一次截图:
验证结果可以分成三类:只在单页出现,按单页处理;在同模板多页出现,按模板或公共组件处理;在原始响应和渲染结果中都出现,优先检查服务器输出与数据库内容。若只在渲染后出现,优先检查页面内脚本和第三方资源。
每次处理完一个页面,保留一份简短记录:URL、采集时间、异常片段、出现层级、对照页面、验证方式和结论。后续再出现类似现象时,先比对历史记录,判断是同一类问题复发还是新问题。对确认正常的页面,也保留一份基线响应,便于下次快速对比。
下一步可以选一个当前可疑页面,按“原始响应、渲染DOM、网络请求、同模板对照页”四项各采集一次,先填出差异表,再决定是继续查单页参数,还是转向公共模板和公共脚本。