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