凌晨一点,做外贸服装的客户发来微信:客户从谷歌搜我们品牌词点进来,跳到了一个赌博页面,截图发来的时候人已经急了。第二天一早我们接手排查,这种劫持跳转的手法比普通挂马更恶心——它认来源,只对搜索引擎来的访客生效,站长自己打开网站一切正常。事后我们把这套网站安全防护清单整理了出来。
劫持的两种路径
先分清是哪一种:代码劫持,是网站文件或数据库被注入了判断UA和来路的跳转脚本;链路劫持,则是DNS或运营商层面被动手脚,代码里完全查不到。这次是前者——攻击者通过一个过期没删的测试账号登进后台,在模板文件里加了一段加密JS,只在来源带google时才触发跳转。站长直接访问永远看不到异常,这是最耽误排查的点。
区分方法也简单:把服务器上的文件全部翻一遍没发现可疑代码,但跳转依然存在,就要怀疑链路层了。这时候换DNS服务商、在本机改hosts直连测试,几步就能锁定问题出在哪一层。层判断错了,改一万行代码也是白改。另外提醒一句:被劫持期间别急着改解析,先把可疑文件、跳转截图、日志都留档,追责和向谷歌申诉都用得上。
我们补上的清单
- 清理测试账号和离职人员的后台账号,开启两步验证
- 模板和核心文件做基线校验,有改动立刻告警
- 后台访问加IP白名单,或至少改掉默认路径
- DNS服务商开启注册锁,防止链路层被劫持
- 每月做一次搜索引擎模拟访问,专查这类“认来源”的跳转
这份清单后来成了我们交付新项目的标准配置。有意思的是,客户当时问了一句:这些事以前为什么没人提?答案很诚实——不出事的时候,这些细节在谁眼里都是成本;出了事,它们全是救命绳。安全清单的价值,永远是用事故换来的。
对搜索引擎的修复要主动
清完代码只是第一步,谷歌可能已经把站点标记为有害,要在Search Console提交重新审核,一般两三天解除。品牌词被标记的那几天,海外客户的信任损失比技术损失大得多。
重新审核通过后别急着翻篇,接下来一个月每天看一眼收录和品牌词搜索结果。有些残留页面谷歌缓存的还是旧快照,需要单独提交删除请求。劫持事故的尾巴,往往比主干还长。
建议
今天就检查一遍后台账号列表,把不认识的名字全删掉,再把品牌词加进监控,每天自动搜一遍,跳转一旦复发当天就能发现。想系统排查一遍自己站点的,找比格网络做一次网站安全防护体检,劫持类问题拖一天,品牌词的搜索损失就多一天。