最近主机吧接到好几个站长求助:网站打开正常,但从搜索引擎点进来就会跳转到博彩网站。有的站长还被百度收录工具提示”网站疑似被黑”,流量一夜归零。
这种攻击在业内很常见。黑客入侵网站后植入跳转代码,把搜索引擎来的流量劫持到非法站点——博彩、色情、钓鱼诈骗都有。受害站长不仅流量受损,还可能被百度降权甚至关停。更麻烦的是,很多站长被黑了都不知道,直到流量暴跌才反应过来。
一、网站被植入跳转代码的常见形式
黑客入侵网站后,会通过以下几种方式植入跳转代码:
| 形式 | 说明 | 杀伤力 |
|---|---|---|
| JS 跳转 | 在 JS 文件中插入 window.location.href 或 window.open,根据 UA、来源、Cookie 判断是否跳转 | ⭐⭐ |
| PHP 文件注入 | 在 index.php、wp-config.php 等核心文件中插入 header() 跳转代码 | ⭐⭐⭐⭐⭐ |
| .htaccess 劫持 | 利用 RewriteRule 将搜索引擎流量重定向到恶意域名 | ⭐⭐⭐⭐ |
| 数据库挂马 | 在 wp_posts、wp_options 表中插入恶意 JS 代码 | ⭐⭐⭐ |
| 主题/插件后门 | 在 WordPress 主题的 functions.php 或插件中隐藏跳转逻辑 | ⭐⭐⭐⭐⭐ |
这类跳转代码往往做了非常精细的条件判断,比如只针对从百度搜索来的流量才触发跳转,直接从浏览器输入网址打开则不跳转。这是很多站长自己查不出问题的原因。
二、如何自查网站是否被植入跳转代码
2.1 用模拟搜索引擎的方式检查
bash
# 模拟百度爬虫访问网站,检查是否有跳转
curl -A "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" \
-L -o /dev/null -w "%{http_code} -> %{redirect_url}" \
https://www.yourdomain.com/
如果返回的 redirect_url 不是你的网站地址,说明存在跳转。
2.2 检查核心文件是否被修改
bash
# 检查近期被修改的 PHP 文件
find /www/wwwroot/ -name "*.php" -mtime -3
# 检查 .htaccess 是否有异常规则
cat /www/wwwroot/.htaccess
# 检查 wp-config.php 或 index.php 是否被注入
grep -n "header\|Location\|window.location\|base64_decode\|eval" \
/www/wwwroot/wp-config.php /www/wwwroot/index.php
2.3 检查数据库中的恶意代码
sql
-- WordPress 数据库中搜索恶意代码
SELECT * FROM wp_posts WHERE post_content LIKE '%document.location%';
SELECT * FROM wp_posts WHERE post_content LIKE '%base64%';
SELECT * FROM wp_options WHERE option_value LIKE '%eval(%';
2.4 使用站长工具验证
- 百度搜索资源平台 → 安全检测
- 站长工具 → 网站劫持检测
- 直接在浏览器中用”模拟蜘蛛”模式访问你的网站
三、为什么跳转拦截不住?
很多站长在被黑之后第一反应是:”我已经装了安全插件/防火墙,怎么还被入侵?”
原因有二:
原因一:传统安全方案对新型跳转代码识别能力有限。 黑客用变种编码、条件触发、分阶段加载等手段,可以轻松绕过基于特征匹配的检测规则。
原因二:防护点在服务器上,恶意代码已经被执行了才被检测到。 相当于小偷已经进门了,警报才响——这时候网站已经被污染了。
要有效防止网站跳转非法链接,关键不是”检测恶意代码”,而是在恶意代码被执行之前就拦截住入侵行为本身。
四、百度云防护方案
主机吧推荐使用 百度云防护 WAF 建立多层防御体系,从入口到出口全面封堵。
4.1 第一层:隐藏源站 IP,防止直接攻击
黑客入侵的第一步通常是扫描源站 IP。WAF 接入后,源站 IP 被隐藏,所有流量经 WAF 过滤后才到达服务器。
bash
控制台 → 站点管理 → 源站 IP 隐藏
状态:✅ 已开启
4.2 第二层:Web 基础防护,拦截注入攻击
黑客植入跳转代码的手段主要是文件上传漏洞、SQL 注入、命令执行。百度云防护 WAF 的 Web 基础防护可以拦截这些攻击行为。
| 防护能力 | 说明 |
|---|---|
| SQL 注入防护 | 拦截恶意数据库查询 |
| 文件上传防护 | 拦截后门文件上传 |
| 命令执行防护 | 拦截系统命令注入 |
| 代码执行防护 | 拦截 PHP/ASP 任意代码执行 |
| XSS 防护 | 拦截恶意脚本注入 |
规则库平均每 2 周自动更新一次,已接入用户无需任何操作即可获得防护。
4.3 第三层:URL 访问控制,防止已植入代码执行
即使黑客已经成功植入了恶意代码,WAF 仍然可以在流量层拦截:
封禁非法外链域名:
bash
控制台 → 安全策略 → URL 访问控制 → 新建规则
规则名称:拦截非法跳转域名
匹配类型:URL 路径
规则内容:你的网站 URL(白名单模式)
处置动作:拦截
限制敏感文件写入:
bash
控制台 → 安全策略 → 精准防护 → 新建规则
规则名称:限制 wp-config.php 写入
路径:/wp-config.php
方法:POST
处置动作:拦截
4.4 第四层:文件完整性监控
WAF 配合源站防护策略,可以监控核心文件的变更:
bash
# 建议在服务器上配合使用此脚本
# 每日检查核心文件 MD5
md5sum /www/wwwroot/wp-config.php \
/www/wwwroot/index.php \
/www/wwwroot/.htaccess | tee /var/log/file_check.log
一旦发现文件被篡改,可以立即从备份恢复并从 WAF 日志追溯入侵来源。
4.5 第五层:恢复后加固
清除跳转代码后,建议执行以下加固操作防止再次被入侵:
bash
# 1. 修改所有密码(服务器 SSH、数据库、后台管理员)
passwd root
mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';"
# 2. 更新所有程序和插件
wp plugin update --all
wp core update
# 3. 删除不用的插件和主题
wp plugin delete 未使用插件名
# 4. 设置文件权限,限制写入
chmod 644 /www/wwwroot/wp-config.php
chmod 644 /www/wwwroot/.htaccess
# 5. 开启 2FA 双因素认证
五、方案对比
| 防护方案 | 隐藏源站 IP | 拦截注入攻击 | 拦截已植入代码 | 自动更新规则 | 运维成本 |
|---|---|---|---|---|---|
| 仅靠安全插件 | ❌ | 有限 | ❌ | ❌ | 中 |
| 宝塔 Nginx 防火墙 | ❌ | 基础规则 | ❌ | 有限 | 低 |
| 传统高防 CDN | ✅ | 部分 | ❌ | 有限 | 中 |
| 百度云防护 WAF | ✅ | ✅ | ✅ | ✅ | 低 |
六、总结
网站被入侵跳转到非法链接,本质上是防御链条出现了一个缺口——可能是插件漏洞、弱密码、过时系统、未隐藏的源站 IP。黑客只需要找到其中一个缺口就能攻进来。
百度云防护 WAF 从五层进行防护:
- 隐藏源站 IP → 黑客找不到你的服务器
- 拦截注入攻击 → 黑客进不来
- URL 访问控制 → 已植入的代码不执行
- 文件完整性监控 → 被改了能及时发现
- 恢复后加固方案 → 彻底堵住漏洞
百度云防护 WAF 基础版 399 元/月,通过主机吧购买享 7.5 折(299 元/月),免费配置指导。如果你发现网站已被入侵但不确定怎么处理,可以直接联系主机吧。
