Web 应用防火墙 (WAF)
Web 应用程序防火墙(WAF)旨在保护 Web 应用程序免遭多种网络攻击,如跨站脚本攻击(XSS)、SQL 注入等威胁。
参数说明
| 参数名 | 数据类型 | 是否必选 | 描述 |
|---|---|---|---|
| rule_sets | array | 是 | 需要启用的规则集合名称列表 |
| action | string | 是 | 触发 WAF 防护时执行的动作,可选 log、block 或其别名 403 Forbidden、edge-captcha、hcaptcha、redirect、page-template、close-connection、redirect-validate、js-challenge、custom-action、pat-attest |
| sensitivity | string | 是 | WAF 防护敏感级别,选项有 high(高)、medium(中)、low(低)、none(无) |
| score | number | 否 | 当 sensitivity 设置为 none 时,可自定义敏感度分数 |
| clearance | number | 否 | 验证码触发后的有效期,缺省值为 60 秒 |
| redirect_url | string | 否 | 当行为设置为 redirect 时,所指定的重定向 URL |
| page_template_name | string | 否 | 全局页面模板名称。page-template 动作,或 pat-attest 的 fallback_action 为 page-template 时必填 |
| page_template_status_code | number | 否 | page-template 动作返回的 HTTP 状态码。pat-attest 不支持该参数 |
| module_name | string | 否 | Lua 模块名称。action 为 custom-action 时必填 |
| fallback_action | string | 否 | pat-attest 校验失败时执行的挑战,可选 edge-captcha、hcaptcha、js-challenge、page-template,默认为 edge-captcha |
| cross_requests | bool | 否 | 设置为 true 时开启跨请求模式,默认值为 true,推荐设置为 false |
| rule_sets_threshold | array | 否 | 为各规则集单独设置敏感度分数,需与 rule_sets 中的规则集一一对应 |
您可以选择使用内置规则集或自定义 WAF 规则集。以下为可用的内置 WAF 规则集列表:
- scanner_detection
- protocol_enforcement
- protocol_attack
- application_attack_lfi
- application_attack_rfi
- application_attack_rce
- application_attack_php
- application_attack_nodejs
- application_attack_xss
- application_attack_sqli
- application_attack_session_fixation
- application_attack_java
配置示例
- enable_rule: true
conditions:
- op: eq
var: uri
val: /waf
waf:
rule_sets:
- scanner_detection
- protocol_enforcement
- application_attack_xss
- application_attack_sqli
sensitivity: medium
action: "403 Forbidden"
cross_requests: false
在上述示例中,当请求的 URI 是 /waf 时,启用 WAF,启用的的规则集包括 scanner_detection、protocol_enforcement、application_attack_xss 及 application_attack_sqli,防护敏感级别设定为中等。一旦触发 WAF 防护机制,则执行动作并返回 HTTP 状态码 403,表示请求被禁止。
以下示例使用 sentinel Lua 模块执行自定义 WAF 动作:
- enable_rule: true
conditions:
- op: eq
var: uri
val: /custom-action
waf:
rule_sets:
- scanner_detection
action: custom-action
module_name: sentinel
以下示例校验 Private Access Token,失败时返回名为 pat-tmpl 的全局页面模板。导入时,edge2yaml 会把模板名称转换为 ID;导出时会恢复为名称。pat-attest 不应设置 page_template_status_code。
- enable_rule: true
conditions:
- op: eq
var: uri
val: /pat-attest
waf:
rule_sets:
- scanner_detection
action: pat-attest
fallback_action: page-template
page_template_name: pat-tmpl