WAFPHP进阶教程
目录
WAFPHP框架运行流程与配置详解
流程篇
WAFPHP的完整运行流程如下:
系统执行流程
- 初始化框架:注册
shutdown_function和spl_autoload_register,确保框架资源能被正确清理 - 收集请求信息:获取客户端IP、GET/POST参数、User-Agent、Cookie、Host等关键信息
- 加载系统配置:根据配置初始化数据模型和日志模块,记录系统启动时间及内存消耗
- 会话验证:检查当前请求的系统自有session有效性(与PHP原生session无关)
- 检测开关判断:若
WAF_ON为false,跳过后续脚本检测直接执行步骤10 - 黑名单检测:检查IP和UA是否在全局黑名单中,若在则拦截请求
- 白名单检测:检查IP和UA是否在全局白名单中,若在则放行请求,不再执行脚本检测
- 脚本加载:根据
SCRIPT_LIST配置加载待执行的检测脚本 - 脚本执行:按顺序执行检测脚本,任一脚本失败即拦截请求
- 系统退出:记录本次请求的运行状态和性能数据
- 资源清理:注销
shutdown_function和spl_autoload_register,释放框架资源
配置篇
核心配置项
WAF_ON
- 功能:脚本检测总开关
- 类型:布尔值
- 默认值:true
DEBUG_LEVEL
- 功能:调试日志级别
- 有效值:DEBUG/INFO/WARN/ERROR
- 日志路径:
#your WAFPHP path#/Runtime/Logs/ - 级别说明:
DEBUG:记录详细运行耗时和内存消耗INFO:记录系统运行主要提示信息WARN:记录系统警告级别错误ERROR:记录系统致命错误
MODEL_TYPE
- 功能:数据模型类型
- 支持类型:Redis/Memcache
- 推荐:Redis(支持更丰富的数据操作,性能更优)
WHITE_LIST_LIFETIME
- 功能:全局白名单有效时间
- 单位:秒
- 限制:不应超过600秒(系统自有session有效时间)
BLACK_LIST_LIFETIME
- 功能:全局黑名单有效时间
- 单位:秒
MODEL_CONFIG
- 功能:数据模型连接配置
- 示例:
[ 'type' => 'redis', 'host' => '127.0.0.1', 'port' => 6379, 'password' => 'your_redis_password', 'database' => 0 ]
黑白名单配置
| 配置项 | 说明 | 示例 |
|---|---|---|
BLACK_IP |
黑名单IP,支持D段范围 | 127.0.0.3-127.0.0.254 |
BLACK_UA |
黑名单User-Agent,支持正则 | `/bot |
BLACK_UA_IGNORE_CASE |
黑名单UA是否忽略大小写 | true |
WHITE_IP |
白名单IP | 192.168.1.0/24 |
WHITE_UA |
白名单UA,支持正则 | /Chrome/i |
WHITE_UA_IGNORE_CASE |
白名单UA是否忽略大小写 | true |
WHITE_UA_DNS_REVERSE |
白名单UA是否启用DNS反向解析 | true |
检测脚本配置
| 配置项 | 说明 | 示例 |
|---|---|---|
SCRIPT_LIST |
检测脚本列表,true表示启用 | ['robot' => true, 'mysql' => false] |
WAF_ROBOT_CONFIG |
机器人检测配置 | 配置详情见机器人挑战模块 |
WAF_MYSQL_CONFIG |
SQL注入防护配置 | 配置详情见防SQL注入模块 |
WAF_XSS_CONFIG |
XSS防护配置 | 配置详情见防XSS模块 |
WAF_UPLOAD_CONFIG |
文件上传防护配置 | 配置详情见防恶意文件上传模块 |
模块篇
机器人挑战模块
WAFPHP的机器人挑战模块提供四种防御模式:
-
JS挑战模式
- 系统返回一段JS代码由客户端浏览器自动执行
- 无法执行JS的请求(如爬虫)被判定为机器人请求
- 优势:无用户体验影响,实时检测
-
英文验证码挑战
- 返回包含英文验证码的页面
- 用户需正确输入验证码
- 优势:简单直观,适用于低流量场景
-
中文验证码挑战
- 返回包含中文验证码的页面
- 用户需正确输入验证码
- 优势:更符合中文用户习惯
-
工作量证明挑战
- 基于JS挑战的升级版
- 增加SHA256工作量证明机制(参考比特币工作量证明)
- 客户端需计算出符合要求的SHA256值,由服务端验证
- 优势:有效抵御自动化工具,提升安全性
防护模块状态
| 模块 | 状态 | 说明 |
|---|---|---|
| 机器人挑战 | ✅ 已实现 | 提供4种挑战模式 |
| 防SQL注入 | ⏳ 开发中 | 未完成,计划支持预编译检测 |
| 防XSS | ⏳ 开发中 | 未完成,计划支持白名单过滤 |
| 防恶意文件上传 | ⏳ 开发中 | 未完成,计划支持MIME类型验证 |
本文档为WAFPHP框架核心配置与运行流程的详细说明,如需扩展开发,请参考《WAFPHP高阶教程》。框架设计遵循"最小侵入、最大防护"原则,建议结合OWASP Top 10防护规范使用,可有效防御常见Web攻击。