应部署边缘WAF并配置SQL注入与XSS防护规则,启用PHP层输入过滤和输出编码,添加安全响应头,并通过测试验证拦截效果。

如果您在部署PHP项目时发现存在SQL注入、跨站脚本(XSS)等攻击风险,可能是由于缺少边缘层实时语义检测与请求拦截能力。通过在边缘节点配置WAF防火墙,可对HTTP请求进行深度解析,在到达PHP应用前即刻识别并阻断恶意载荷。
一、启用边缘WAF并加载SQL注入防护规则集
边缘WAF需在请求进入源站PHP服务之前完成匹配与拦截,其核心依赖预置的SQL注入特征规则库,覆盖union、select、from、order by、sleep、load_file、into outfile等关键字及注释符(--、#、/**/)、运算符(=, !=, >=, +=)等组合模式。
1、登录边缘安全控制台,进入WAF实例管理页面。
2、选择对应域名,点击“防护策略” > “Web攻击防护”。
立即学习“PHP免费学习笔记(深入)”;
3、开启“SQL注入防护”开关,并将防护等级设为严格模式。
4、在规则组中勾选“高危SQL语法检测”“布尔盲注特征识别”“时间延迟注入检测”三项子规则。
5、保存配置并触发全网边缘节点策略同步,等待状态变为“已生效”。
二、配置XSS跨站脚本攻击的多上下文检测策略
边缘WAF对XSS的拦截需覆盖HTML标签、事件处理器、JavaScript协议、CSS内联样式等多种注入路径,不能仅依赖简单关键字过滤,而应结合正则归一化、编码还原、DOM结构模拟等技术识别绕过行为。
1、在相同WAF实例的“Web攻击防护”页中,打开“XSS防护”开关。
2、选择防护模式为深度检测(含编码还原),确保支持对base64、URL编码、Unicode转义等混淆形式的解码还原。
3、手动添加自定义规则:在“XSS关键词增强”栏中补充业务特有高危词,如onfocus、onmouseover、vbscript:、expression(、-webkit-binding。
4、针对富文本上传场景,单独配置白名单路径(如 /api/upload/richtext),将其XSS检测动作设为放行+日志记录,避免误拦合法HTML内容。
三、部署PHP层协同防护:注入点级精准过滤
边缘WAF属于前置防御,但无法覆盖所有业务逻辑漏洞。需在PHP代码中嵌入轻量级输入校验与输出编码机制,形成纵深防御闭环,尤其针对WAF可能漏过的参数化构造、JSON上下文、JS模板插值等场景。
1、在入口文件(如index.php)顶部引入安全过滤函数库:require_once 'lib/security_filter.php';。
2、对所有GET/POST/REQUEST参数执行白名单过滤:filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING),禁用strip_tags等不安全清理方式。
3、在HTML输出处强制调用上下文感知编码:echo htmlspecialchars($user_input, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');。
4、对JavaScript内联输出使用json_encode:var data = ;。
四、设置WAF联动响应头强化浏览器端防御
除请求拦截外,WAF可在响应中注入安全头部,使浏览器主动拒绝危险行为,弥补服务端检测盲区,尤其对存储型XSS和基于CSP绕过的攻击构成二次抑制。
1、进入WAF实例的“响应头管理”模块。
2、新增响应头:Content-Security-Policy,值设为:default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; object-src 'none'; base-uri 'self';。
3、添加第二条响应头:X-Content-Type-Options,值为:nosniff。
4、启用“XSS Protection”响应头(兼容旧版浏览器),值设为:1; mode=block。
五、验证WAF拦截有效性并隔离误报流量
真实攻击载荷与误报请求在边缘WAF日志中呈现不同行为模式,需通过构造典型Payload并观察拦截日志、响应状态码(403)、边缘Trace-ID等方式确认策略生效,同时将高频误报IP段加入临时放行列表,避免影响正常业务。
1、使用curl发送SQL注入测试请求:curl -v "https://example.com/search?q=test%27%20OR%201%3D1%23",检查返回是否为403且无数据库错误信息。
2、发起XSS测试请求:curl -v "https://example.com/profile?name=%3Cscript%3Ealert(1)%3C/script%3E",确认响应体中script标签已被剥离或返回空内容。
3、在WAF实时日志中筛选“rule_id: SQLI-942100”或“rule_id: XSS-942100”,查看匹配详情与拦截动作。
4、若某运营后台IP频繁触发误报,进入“IP黑白名单”,添加该IP至临时白名单(有效期2小时),并标记为“需人工复核”。



















