在现代 Web 安全体系中,各类防护机制如 Web 应用防火墙(WAF)、验证码、IP 黑白名单、输入验证、同源策略等被广泛部署,用于抵御攻击者的入侵和渗透。然而,正所谓“道高一尺,魔高一丈”,防护机制不是安全的终点。攻击者总会尝试各种方法进行绕过,测试人员若不能提前识别防护系统的薄弱环节,就无法实现真正有效的安全评估。
本文将系统性地梳理常见的 Web 防护机制,并从攻防实战的角度出发,剖析各类绕过测试策略、原理、技巧与对策,帮助读者掌握“绕过之道”,以攻促防,从而构建更坚固的防线。
一、输入校验与过滤绕过
1.1 防护机制说明
输入校验是 Web 安全的第一道防线,用于防止 SQL 注入、XSS、命令执行等攻击。常见策略包括:
-
黑名单/白名单字符过滤
-
正则表达式匹配
-
HTML 实体转义
-
特殊符号转义 (
<
,'
,"
,--
等)
1.2 绕过策略与示例
绕过手法 | 示例 |
---|---|
编码绕过 | ' OR '1'='1 → %27%20OR%20%271%27%3D%271 (URL 编码)<script> → <script> |
拼接绕过 | 利用空格、注释、无害字符:UNION/**/SELECT UN/**/ION/**/SELECT |
大小写绕过 | select → SeLeCt |
语法变异 | 利用不同数据库支持:MySQL 中用 /*!SELECT*/ |
双重编码 | %2527 实际为 %27 ,适用于不规范的解码顺序 |
协议绕过 | XSS 中使用 data: , javascript: , vbscript: URI |
1.3 防御建议
-
统一输入过滤与输出编码
-
使用 ORM 代替拼接 SQL
-
WAF 应具备变异语法识别能力
-
使用 Web 安全编码库,如 OWASP ESAPI
二、验证码绕过
2.1 防护机制说明
验证码(CAPTCHA)用于防止暴力破解、脚本注册、刷票等自动化行为。
2.2 绕过策略
绕过方式 | 描述 |
---|---|
验证码重用 | 验证码未绑定 IP 或 Session,使用固定值即可 |
接口分离调用 | 注册接口与验证码验证接口分离,可跳过验证码接口 |
图像识别 | 使用 OCR(如 Tesseract)识别图片验证码 |
第三方打码平台 | 使用如打码兔、2Captcha 等服务 |
短信验证码爆破 | 利用时间窗口 + 弱随机数,预测验证码值 |
滑动验证模拟 | 使用 Puppeteer、Selenium 绘制轨迹进行模拟滑动 |
逻辑绕过 | 某些系统前端校验验证码是否正确,后端不验证即可跳过 |
2.3 防御建议
-
验证码应绑定用户会话和时间戳
-
限制验证码尝试次数,增加 IP 风控策略
-
增加验证码验证强度(动态图形、行为验证等)
三、WAF(Web Application Firewall)绕过
3.1 防护机制说明
WAF 用于检测和阻止常见 Web 攻击,如 SQL 注入、XSS、命令执行、路径遍历等。通过规则匹配、行为分析等方式实现防护。
3.2 绕过策略
类型 | 示例 |
---|---|
编码混淆 | %2527 → %27 → ' |
变异语法 | SQL 注入中使用 /*!union*/select |
错误组合 | or '1'='1' -- → or/**/'1'='1'-- |
大小写/拼写错乱 | UNION SELECT → UniOn SeLEct |
绕过规则特征 | 使用非标准关键字顺序或空格注释 |
数据包拆分 | 使用分块传输、HTTP 报文分段来绕过检测 |
Unicode 编码 | 使用全角字符(例如:( 代替( ) |
多层代理绕过源 IP 检查 | 利用 X-Forwarded-For 欺骗源 IP |
3.3 防御建议
-
定期更新 WAF 特征库
-
配合行为识别与 IP 风控机制
-
增加日志审计、检测绕过尝试行为
-
建议使用 AI+语义识别的下一代 WAF(如深信服、云锁 AI 模式)
四、身份认证绕过
4.1 防护机制说明
包括登录口令认证、Token 鉴权、Session 验证、OAuth 等机制。
4.2 绕过方法
类型 | 示例 |
---|---|
缺失身份验证 | 管理后台接口未校验权限 |
逻辑绕过 | 重放登录包跳过验证流程 |
JWT 篡改 | 若使用 none 算法可伪造 JWT或公私钥混用导致任意签名 |
会话固定 | session ID 可预测或固定,可伪造登录状态 |
Referer 控制绕过 | 后台仅通过 Referer 判断访问来源,可伪造 |
Token 泄漏 | Token 存储在 URL,容易被中间人截取 |
双因素绕过 | 通过直接调用二次验证接口,绕过前端逻辑校验 |
4.3 防御建议
-
所有关键接口强制身份认证
-
使用加密的、短生命周期的 Token
-
Token 存储应使用
HttpOnly + Secure + SameSite
Cookie -
后端强制逻辑验证,杜绝仅靠前端校验
五、跨域与前端安全绕过
5.1 防护机制说明
现代前端框架通过浏览器同源策略(SOP)与跨域资源共享(CORS)实现安全隔离。
5.2 绕过手段
类型 | 示例 |
---|---|
CORS 配置错误 | Access-Control-Allow-Origin: * + Access-Control-Allow-Credentials: true 可导致敏感信息泄露 |
JSONP 滥用 | 如果接口支持 JSONP 且未校验 callback 参数,可能被任意调用 |
开放式重定向 | 利用跳转逻辑获取用户 Cookie |
内联 API 被前端泄漏 | 使用浏览器控制台观察 Vue/React app 的 API 调用逻辑 |
DOM XSS + CORS | DOM 中反射型 XSS 可以用来获取跨域返回数据 |
5.3 防御建议
-
精确配置 CORS 策略,只允许可信域名
-
禁止使用
Access-Control-Allow-Origin: *
和withCredentials: true
同时出现 -
对所有跳转链接进行目标地址校验
-
使用 CSP(内容安全策略)防止 DOM XSS
六、IP 限制与访问频率绕过
6.1 防护机制说明
主要通过限制 IP 频率、黑名单、地理位置判断等方式来阻断异常访问。
6.2 绕过策略
绕过手法 | 示例 |
---|---|
代理池切换 | 使用大量匿名代理绕过 IP 限制(如 Tor、ProxyList) |
X-Forwarded-For 伪造 | 在多个代理节点环境中伪造客户端 IP |
DNS 污染 | 某些系统根据域名判断来源,利用 DNS 污染欺骗 |
User-Agent/Referer 模拟 | 模拟正常浏览器行为,绕过简单的防爬规则 |
请求速率变换 | 模拟人类访问节奏,加入延迟与不规则性 |
6.3 防御建议
-
引入行为识别模型,防止机器人模拟人类行为
-
IP 策略需结合设备指纹、Cookie、UA 多因子分析
-
使用验证码作为访问频率控制辅助手段
七、CSRF 防护机制绕过
7.1 防护机制说明
常见 CSRF 防护方式包括:
-
CSRF Token 验证
-
Referer 验证
-
SameSite Cookie 策略
7.2 绕过方式
绕过点 | 描述 |
---|---|
Token 可预测或未校验 | 如果 Token 固定、无校验逻辑可直接绕过 |
Referer 可伪造 | 某些客户端环境可通过 JS Hook 修改 Referer |
未启用 SameSite 策略 | Cookie 跨站可被携带,导致请求成功 |
CORS 引发 CSRF | 若 CORS 配置错误 + Credential Enabled,可能引发跨站攻击 |
7.3 防御建议
-
Token 必须绑定用户 + 请求来源 + 有效时间
-
设置 Cookie 为
SameSite=Strict
-
所有敏感接口必须验证 CSRF Token,不能依赖前端
结语
防护机制的设计不是安全的终点,而是攻防对抗的起点。
Web 安全测试的真正目标,是在模拟真实攻击者的行为中发现防护系统的脆弱点,从而提前暴露风险、强化防御体系、实现闭环治理。
本文通过对常见防护机制及其绕过策略的系统梳理,为测试人员、开发者和安全架构师提供了一个从“机制 → 绕过 → 修复”三段式闭环思维模型,助力构建更可信赖的 Web 安全生态。