“今天我一大早准备进网站改点资料,结果网站的首页却变了样,画面当中花花绿绿全是赌博广告。就连公司的简介页也遭了殃,被改得乱七八糟。第一反应是赶紧进后台看看,结果死活登不上,密码怎么输都不对,这才反应过来出大事了。我这是被黑了吗?这些代码是怎么进去的?怎么清理干净?”

一个做五金加工生意的老板上周大半夜发消息给我,他实在是急得不行。他网站做了三年多一直没问题,结果突然被挂满了乱七八糟的广告页面,搜公司名下面跟着一长串什么“澳门赌场”“六合彩”的内容。客户打电话来问,他自己都不好意思解释。
网站被植入恶意代码这件事,就像店里进了贼,小偷不光偷了东西,还在你店里贴满了他的广告。很多老板第一反应是不知道这些代码是什么、怎么进去的、怎么彻底弄干净。今天把这三个问题讲清楚。

一、网站恶意代码到底是什么?
恶意代码就是别人通过技术手段在你网站里偷偷植入的一段程序,用来实现他们自己的目的。这些代码通常隐藏在正常文件的角落或者数据库的某个表里,在网站前端可能完全看不到,但搜索引擎抓取的时候能发现。
你可以把网站想象成一栋楼,恶意代码就像被人偷偷在某个房间里装的窃听器或者小广告。你以为楼里一切正常,但外来的访客看到的却是乱七八糟的东西。
恶意代码被植入之后,常见的后果有几种:网站首页被篡改成赌博或色情广告页面,搜索结果里公司名下出现大量不相关的垃圾内容,网站被浏览器或者搜索引擎标记为风险站点,服务器被植入挖矿程序导致网站越来越慢越来越卡,用户访问网站时被自动跳转到其他网站去。

二、常见的恶意代码有哪些类型?
1. 网页挂马代码
这种代码被植入网站的正常页面里,当用户打开页面的时候会自动触发恶意程序,悄悄在用户电脑上安装病毒或者挖矿软件。更常见的一种挂马形式是生成大量你看不到的隐藏页面,这些页面里全是赌博或者色情的关键词和外链,专门给搜索引擎看的。用户打开你的网站看不到这些内容,但搜索引擎蜘蛛抓取的时候会以为你的网站变成了赌博网站。
2. 网站后门代码
后门代码就像一个藏在系统里的隐蔽入口,攻击者通过这个入口可以随时进入你的网站后台和服务器。后门通常伪装成正常的系统文件,文件名看起来像系统文件,存放路径也放在一堆正常文件中间,不专门去扫很难发现。攻击者通过后门进来了之后,想改网页改网页,想偷数据偷数据,甚至可以在你清理完恶意代码之后再次进入,因为你只清理了表面没把后门堵上。
3. 重定向跳转代码
这种代码的作用是当用户访问你网站的时候,页面自动跳转到攻击者指定的另一个网站。比如用户打开你的公司官网,结果被转到了一个卖假药的网站或者色情网站。重定向代码通常写在页面文件的最顶端,在正常内容加载之前就执行跳转了,所以用户在页面上根本看不到任何你的正常内容。
4. SQL注入攻击代码
攻击者在你网站的表单输入框或者URL参数里插入一段数据库操作命令,如果网站程序没有做过滤处理,这段命令就会直接对数据库执行操作。轻则被导出你的客户数据和后台密码,重则整个数据库被加密锁定,对方索要赎金才给你解锁。这种攻击利用的是代码漏洞,不是直接传文件进来,所以很多老板查文件发现没什么异常,但数据已经泄露了。
三、发现恶意代码之后怎么彻底清理?
清理恶意代码不是删几个文件就完事了。如果只是删了表面恶意文件而没堵上漏洞,过几天又会被重新植入。
1. 第一步:先关站止损
先别急着删东西,把网站临时关了再说。让访客打开的时候,只能看到一句‘网站维护中,马上就好’的提示。为什么先关站?因为挂着恶意代码的每一分钟,都在劝退看到它的潜在客户。而且搜索引擎的蜘蛛如果在这个时候抓取到你的赌博广告页面,会判定你参与了违规优化,后面恢复起来更费劲。同时提醒公司员工暂时不要登录网站后台,因为不确定后台有没有也被攻破。
2. 第二步:全面扫描找出所有恶意文件
用安全扫描工具对网站所有文件进行一次全面扫描,找出那些最近被修改过的文件、文件名看起来可疑的文件、以及代码内容里包含不明加密脚本的文件。重点检查几个容易被植入代码的地方:网站根目录下的首页文件、模板文件夹、上传文件夹、以及一些不常用的插件目录。攻击者喜欢把恶意代码藏在这些地方,因为文件多不容易被发现。
3. 第三步:清理干净之后马上修改所有密码
网站后台管理员密码、数据库密码、服务器登录密码,全部改一遍。密码要用复杂一点的组合,长度至少十二位以上,包含大小写字母、数字和特殊符号。这一步不做的话,攻击者当前可能已经拿到了你的密码,不然你这边刚清理完他那边画面又登录进来了。
4. 第四步:检查有没有后门文件
后门文件通常伪装成正常的系统文件,只查文件名看不出来,需要看文件内容里有没有可疑的加密代码。重点查找那些代码内容特别短但看起来又不像正常功能的文件,以及创建时间和其他同目录文件不一致的文件。如果不确定哪些文件是后门,找技术人员协助排查。
5. 第五步:清理完之后去搜索引擎平台提交申诉
网站清理干净之后,去搜索引擎站长平台提交安全申诉,说明网站已经清理了恶意代码并修复了漏洞。审核通过之后搜索引擎会解除对网站的风险标记,搜索结果里那些赌博广告的垃圾描述也会逐步消失。
6. 第六步:把漏洞堵上防止再次被黑
这次攻击者是通过什么途径进来的,要把这个入口堵上,不然下次还能用同样的方式进来。常见入口包括:比如网站程序版本太旧存在已知漏洞,插件长期没更新被利用,后台的密码太过于简单被暴力破解,文件上传功能没做类型校验被传了恶意的脚本。针对不同入口做对应的修复,把程序版本和插件都更新到最新,所有密码换成高强度组合,上传目录禁止执行脚本权限。
四、日常怎么预防?
定期更新网站程序和所有插件到最新版本,安全补丁发布之后尽快更新。三个月改一次后台和服务器密码,不要用简单密码。一个月至少检查一次网站有没有被挂马或者篡改。网站文件和数据库定期备份到本地保存,万一出了问题能快速恢复。后台登录地址不要用默认的,改成一个只有你自己知道的路径。这些基础工作花不了多少时间,但能在很大程度上降低被攻击的风险。