You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Cloudflare/WordPress防火墙阻止WooCommerce filter_color超2色请求?

有效解决方案

一、Cloudflare 自定义规则(推荐)

直接通过正则匹配filter_color参数中逗号的数量来拦截恶意请求:

  1. 进入Cloudflare控制台 → 目标站点 → 安全 → WAF → 自定义规则 → 创建规则
  2. 配置规则:
    • 匹配条件:http.request.uri.query 匹配正则 /(?:^|&)filter_color=(?:[^,&]+,){2,}[^&]*/
    • 动作选择「阻止」
    • 保存规则

说明:正则里的(?:[^,&]+,){2,}会匹配至少2个逗号,对应3种及以上颜色的请求,精准拦截恶意请求同时放过1-2种颜色的正常访问。

二、.htaccess 规则修复

替换你之前的无效规则,使用以下代码:

RewriteEngine On
# 拦截filter_color包含3种及以上颜色的请求
RewriteCond %{QUERY_STRING} (?:^|&)filter_color=(?:[^,&]+,){2,}[^&]*
RewriteRule ^ - [F,L]
  • [F] 返回403禁止访问,[L] 停止后续规则处理,避免冲突

三、WordPress 端拦截方案

1. Wordfence插件自定义规则

进入Wordfence → 防火墙 → 管理防火墙 → 自定义规则 → 添加规则:

  • 规则类型选「自定义正则表达式」
  • 填入正则:/(?:^|&)filter_color=(?:[^,&]+,){2,}[^&]*/
  • 动作选择「阻止」后保存

2. 主题代码拦截

在当前主题的functions.php中添加以下代码:

add_action('init', 'block_excessive_color_filters');
function block_excessive_color_filters() {
    if (isset($_GET['filter_color'])) {
        $color_count = substr_count($_GET['filter_color'], ',') + 1;
        if ($color_count >= 3) {
            wp_die('请求被拦截', '禁止访问', array('response' => 403));
        }
    }
}

这段代码会在请求初始化时统计颜色数量,超过2种直接返回403。


内容的提问来源于stack exchange,提问作者ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 08:52:33