通过自定义AWS WAF规则保护Laravel(Vapor)应用
Laravel Vapor + AWS WAF 防护方案可行性分析及实现要点
1. 代码触发临时IP封禁至AWS WAF
该方案完全可行,具体实现要点如下:
- 依赖准备:安装AWS SDK for PHP,执行命令
composer require aws/aws-sdk-php - 权限配置:给Laravel Vapor的执行IAM角色添加WAF操作权限,至少需要
wafv2:GetIPSet和wafv2:UpdateIPSet权限,确保代码能调用WAF API - 异常处理逻辑:在
SuspiciousOperationException的捕获逻辑中,提取请求的真实IP(Vapor环境下需从X-Forwarded-For头获取),调用WAFv2的UpdateIPSet接口将该IP加入预设的封禁IP集合 - 自动解禁处理:AWS WAF本身不支持IP自动过期,需额外实现定时清理逻辑——可以用Laravel的任务调度(
Schedule)定时扫描IP集合,移除超过5分钟的记录;也可以用AWS EventBridge触发Lambda函数完成清理
2. WAF拦截请求方法伪造攻击
该方案可行,且属于WAF的典型防护场景,实现要点如下:
- 创建WAF自定义规则:在AWS WAF控制台针对Vapor关联的CloudFront/ALB资源创建规则组,添加自定义规则
- 配置匹配条件:规则目标选择
HTTP method字段,设置匹配模式为“包含字符串”或正则匹配,覆盖../、etc/passwd等路径遍历特征,同时注意处理URL编码等变形攻击 - 设置拦截动作:将规则的动作为
Block,确保恶意请求在到达Laravel代码之前就被WAF拦截 - 验证效果:通过curl等工具构造携带恶意method的请求,确认请求被WAF拦截且未进入Laravel应用
总结
你提出的两点防护需求均可行:第一点需结合AWS SDK和定时任务实现动态临时封禁;第二点直接通过WAF规则配置即可完成前置拦截,无需修改Laravel代码。
内容的提问来源于stack exchange,提问作者liepumartins
相关产品推荐
相关产品推荐

