phpwaf规则文件必须为字段完整的json格式,含唯一”id”、合法secrule语法的”rule”、字符串”action”、数字”score”和布尔”enabled”;cli导入需绝对路径加–format=json与–force;web上传失败多因nginx/apache/php上传限制。
phpwaf 规则文件格式必须是 JSON 且字段完整
phpwaf(如基于 mod_security 或自研规则引擎的 PHP WAF)批量导入时,rules.json 不是随便拼个数组就能用。常见失败原因是字段缺失或类型错误:比如漏掉 "id"、"rule"、"action",或把 "score" 写成字符串而非数字。
正确结构示例(单条):
{
"id": "900101",
"rule": "SecRule ARGS "(?i)union\s+select" "phase:2,deny,status:403,msg:'SQL Injection Detected'"",
"action": "deny",
"score": 5,
"enabled": true
}
-
"rule"字段值必须是合法的 SecRule 语法字符串,不能带换行或未转义双引号 -
"id"必须全局唯一,重复 ID 会导致后导入的覆盖前一条 -
"enabled"建议显式设为true或false,不依赖默认值
使用 phpwaf 提供的 CLI 工具导入需指定 –format=json
多数 phpwaf 部署包附带 phpwaf-cli,但直接 phpwaf-cli import rules.json 往往报错 —— 缺少格式声明。
必须加 --format=json 参数,且路径需为绝对路径(相对路径在 daemon 模式下常解析失败):
立即学习“PHP免费学习笔记(深入)”;