WAF(Web 应用防火墙)的自定义规则 匹配条件,是用于精准识别目标请求特征的核心维度。以下是常见匹配项的详细解析:
1. 基础网络 / 协议维度
- IP:
匹配客户端源 IP 地址(如192.168.1.1
)。常用于封禁恶意 IP、允许白名单 IP 等场景。 - X-Forwarded-For(XFF):
代理环境中,记录原始客户端 IP(因代理会改写源 IP,需通过 XFF 头还原真实 IP)。适合多云 / 代理架构下的 IP 策略。 - Http-Method:
匹配 HTTP 请求方法(如GET
/POST
/PUT
/DELETE
)。可拦截非法方法(如站点仅允许GET/POST
,则封禁PUT
)。
2. URI 相关维度
- URI:
匹配完整请求路径 + 参数(如/login?username=test
),覆盖 URI 的全部内容。 - URI Path:
仅匹配路径部分(如/login
),排除参数,适合针对接口路径的规则(如/admin
后台路径防护)。 - Query String:
匹配完整查询参数(如?username=test&pwd=123
),用于检测参数整体异常(如长度、格式)。 - Query String Parameter:
匹配单个参数的名或值(如username
参数的值test
),精准检测参数注入(如 SQL 注入、XSS 的参数特征)。
3. HTTP 头维度
- Host:
匹配请求的主机头(如www.example.com
),防止 Host 头伪造(如恶意解析到本站)。 - Referer:
匹配请求的来源页面(如https://example.com/index
),用于防盗链(如图片仅允许本站 Referer)。 - User-Agent(UA):
匹配客户端标识(如浏览器、爬虫的 UA 字符串),可拦截异常 UA(如扫描器、恶意爬虫的特征 UA)。 - Header:
匹配自定义 HTTP 头(如Auth-Token
),灵活扩展规则(如检查自定义头的存在、格式)。
4. 请求体维度
- Content-Type:
匹配请求体的内容类型(如application/json
/multipart/form-data
),防止非法格式请求(如站点仅接受 JSON,封禁text/plain
)。 - Content-Length:
匹配请求体的长度(字节),拦截过大 / 过小的异常请求(如正常请求体应 <1MB,封禁> 100MB 的 POST)。
5. Cookie 维度
- Cookie:
匹配完整 Cookie 键值对(如session=abc123; user=test
),检测 Cookie 内容异常(如恶意注入的 Cookie 值)。 - Cookie Name:
仅匹配Cookie 的名称(如session
),用于检测非法 Cookie 名(如站点未定义的 Cookie)。
规则设计思路
这些条件可通过 “且 / 或” 逻辑组合,实现精准拦截:
- 例 1:
IP=恶意IP 且 Http-Method=POST
→ 针对特定 IP 的 POST 攻击。 - 例 2:
URI Path=/admin 且 User-Agent=恶意爬虫UA
→ 拦截对管理后台的爬虫扫描。
通过灵活搭配,可覆盖爬虫、注入、非法访问、协议违规等多种攻击场景,提升 WAF 防护的精准性。