跳到主内容

AI 建站怎么防爬与限流:WAF 规则、频率限制与恶意请求拦截的完整配置

100%
AI 建站怎么防爬与限流:WAF 规则、频率限制与恶意请求拦截的完整配置

AI 建站最大的错觉是「上线就完事」。真实情况是:任何一个公开站点,在上线几小时内就会开始被自动化流量扫描——撞库 wp-login.php 、探测 xmlrpc.php 、抓内容、刷接口。防爬与限流的正确做法不是装一个安全插件就结束,而是在边缘层、应用层、服务器层各放一道,并且所有规则先「只记录不拦截」跑一周再收紧。

先搞清楚要挡的是哪四类流量

流量类型特征该在哪一层挡推荐动作
撞库 / 暴力破解短时间内大量 POST /wp-login.php边缘层频率限制 + 托管质询
漏洞扫描枚举 /wp-content/plugins/xxx 、探测 xmlrpc.php边缘层直接 Block
内容抓取高频 GET 、异常 UA 、无 JS 执行边缘层 + 应用层质询 / 限速 / robots 约束
应用层滥用刷搜索、刷表单、刷 REST 接口应用层按接口单独限速

分不清这四类,规则就会写成一刀切,最常见的后果是把搜索引擎爬虫和真实客户一起挡在门外。

边缘层:五条必配规则

以 Cloudflare 这类边缘 WAF 为例,下面这组规则是性价比最高的最小集,免费套餐基本都能配:

  1. 登录页限速:http.request.uri.path eq "/wp-login.php" and http.request.method eq "POST",单 IP 每分钟超过 5 次就封 1 小时。真人输错密码不会触发,脚本第一次跑就会被封。
  2. 封 xmlrpc.php:http.request.uri.path eq "/xmlrpc.php",动作直接 Block 。它既是撞库放大器也是 DDoS 反射源,2026 年几乎没有主流插件还依赖它。
  3. 禁止执行上传目录里的 PHP:http.request.uri.path contains "/wp-content/uploads/" and http.request.uri.path ends_with ".php",动作 Block 。这条能挡掉一大类「伪装成图片的马」。
  4. 可疑 UA 拦截:User-Agent 匹配 (python-requests|curl/[0-6]|masscan|zgrab),动作 Block 。
  5. 后台 IP 白名单:http.request.uri.path contains "/wp-admin" and not ip.src in {你的出口 IP},动作 Block 。务必放行 admin-ajax.php,否则前台搜索、购物车更新会全部失效——这是新手最常踩的坑。
登录页不要直接 Block 。换成 IP 或换网络后,你自己也会被锁在门外。用「托管质询 / Managed Challenge 」更合理:真人过验证,脚本过不去。

应用层:Nginx 限流与 WordPress 加固

边缘层挡的是通用攻击,按接口限速还得靠自己。 Nginx 侧用 limit_req 配一个通用桶:

# http 段定义
limit_req_zone $binary_remote_addr zone=general:10m rate=10r/s;
limit_req_zone $binary_remote_addr zone=search:10m  rate=1r/s;

# server 段引用
location / {
    limit_req zone=general burst=20 nodelay;
}

location = /?s= {
    limit_req zone=search burst=5 nodelay;
}

WordPress 侧再补几条常量,把后台能被当作跳板的口子关掉:

// wp-config.php
define( 'DISALLOW_FILE_EDIT', true );   // 禁止后台编辑 PHP 文件
define( 'FORCE_SSL_ADMIN', true );      // 后台强制 HTTPS
define( 'WP_AUTO_UPDATE_CORE', 'minor' );
REST API 要不要一起限流?
要,但不能一刀切。 REST API 是很多前台功能和自动化发文的入口,直接封会让区块编辑器、部分插件和你的发布脚本一起失效。正确做法是对 /wp-json/wp/v2/posts 这类写入路径做单独限速 + 应用密码鉴权,对只读的 GET 路径保持宽松。

服务器层:别忘了锁源站 IP

如果只用 CDN 挡在前面,而源站 IP 还暴露着(常见于邮件 MX 记录、历史子域名解析),攻击者可以完全绕过边缘层直连你的服务器。做两件事:

  • 用 Shodan / SecurityTrails 反查域名历史解析,清理暴露源站 IP 的入口。
  • 服务器防火墙只放行 CDN 的官方 IP 段,其余 80/443 一律丢弃。

上线顺序:先记录,后拦截


  1. 第 1 天:所有规则设为「仅记录」,不产生任何拦截动作。

  2. 第 2–3 天:看日志,统计被命中的 IP 、 UA 、路径,区分误伤与真实攻击。

  3. 第 4 天:把误伤路径(如 admin-ajax.php 、 REST 只读接口)加进跳过条件。

  4. 第 5 天:确定性高的规则(xmlrpc.php 、 uploads 下的 PHP)改为 Block 。

  5. 第 6 天:限速类规则改为托管质询,观察一周。

  6. 第 7 天:开启告警,把「单规则短时间大量命中」推送到邮箱或 IM 。

三个最常见的误配置

  1. 只装 WAF 不更新核心与插件:WAF 是滤网不是免死金牌,已知 CVE 该补还是得补。
  2. 规则设太凶挡住真实下单:表单提交、支付回调、 Webhook 回调都要单独放行,最好按 IP 白名单而不是按 UA 放行。
  3. 没有备份就上拦截规则:WAF 挡的是「进来之前」,备份救的是「已经出事之后」,两者不能互相替代。

安全是个体系工程,本文只覆盖流量侧。 HTTPS 与安全响应头部分可以看 AI 建站 HTTPS 配置指南;出事后怎么还原,参考 AI 建站备份与恢复怎么做;日常要跑哪些检查项,见 AI 建站上线后的维护清单与自动化。


直接封掉 wp-login.php 是不是最安全?
不是,那是把自己也关在门外。正确做法是对 POST 请求做频率限制或托管质询,让真人在输错几次后仍能通过验证,脚本则在第一轮就被拦下。如果团队出口 IP 固定,再加一层 IP 白名单更稳妥。

xmlrpc.php 可以无脑封吗?
绝大多数站点可以。它用于 pingback 和远程发布,2026 年主流插件基本不再依赖。若你确实用第三方发布工具,只放行那一个来源 IP 段即可,不要全开。

限流阈值设多少合适?
登录页单 IP 每分钟 5 次 POST 是通行值;整站通用限流 10r/s 、 burst 20 适合多数中小站点;站内搜索、表单提交这类高成本接口单独设 1r/s 。最终阈值要按你自己的访问日志调,不要照抄。

怎么判断规则有没有误伤正常用户?
上线前一周只记录不拦截,然后对比「命中规则的 IP 数」与「这些 IP 是否产生了有效会话(登录、加购、提交)」。有有效会话却命中规则,就是误伤,需要加跳过条件。

查看 WordPress 官方安全与鉴权文档
这篇有帮助吗?
云上的幻象
云上的幻象查看主页

七彩云博客,分享 WordPress 建站实战与 AI 工具测评,覆盖服务器运维、站长工具、软件资源与电商运营干货,专注原创实用的主题插件、网站加速与安全优化教程。

958文章4评论

相关文章

评论 (0)

欢迎你,新朋友,感谢参与互动!文明发言,理性交流 · 首次评论将在审核后展示