用途:发现应用允许的请求产生非法结果这类业务逻辑缺陷,如0元购买、重复退款、跳过必要步骤。扫描器无法发现,因为每条规则都特定于业务。核心原则是应用强制预期流程,测试者验证所有仍能“跑通”的非预期路径。
适用与跳过:适用于有多步工作流、金额/积分/配额、有状态流程或可被滥用的业务规则的应用。无状态、单动作、无规则或状态的工具不适用,罕见,跳过前应复核;若判定不适用,报告“business-logic-testing: N/A — no stateful workflow/rules”后停止。授权:仅限自有应用与测试数据,逻辑滥用可能改变金额或状态,应使用非生产环境。
方法:先理解预期流程,梳理步骤、规则与每步假设(如顺序:添加→支付→发货;规则:数量≥1;假设:价格来自服务端)。再挑战每个假设:负值/零值/超大值、跳过步骤、重排步骤、服务端应拥有的客户端传值、重复动作。攻击状态机:乱序到达状态或重访终态。攻击并发:并行多次执行“仅一次”动作(竞态/TOCTOU)。攻击数量与金额:篡改价格、总额、币种、折扣、舍入、限额。具体模式见 references/logic-attack-patterns.md。
经典逻辑缺陷:参数篡改(改价格、总额、数量、userId、status);负数/溢出(qty=-1 加分、超大值溢出、0 绕过扣费);流程绕过(未支付/未验证直达确认或下载);状态机滥用(取消已发货订单、重开已关闭工单获取权限);竞态/TOCTOU(并行多次兑换礼品卡/优惠券/提现);重放(重提交签名或一次性请求,如支付回调、OTP、幂等键);折扣/退款滥用(叠加优惠券、退款超过支付、部分退款循环);限额绕过(并行请求或多会话突破单用户上限)。竞态测试价值高且常被遗漏:同时(非顺序)发送“受限”动作多次,检查是否成功超过一次,如20个并行兑换单次优惠券;可用 Burp Turbo Intruder 或脚本并行发起相同请求。
输出:描述预期规则、破坏规则的请求与业务影响(资金损失、限额绕过、权限提升),严重级别按真实影响判定,常为严重。交接:在预发布环境安全复现,与认证/访问控制链式组合,通过安全加固修复(服务端权威取值、原子事务/锁、幂等键、服务端状态校验)。
常见错误:寻找代码坏味道——逻辑缺陷在合法请求中,必须了解规则;顺序测试动作而漏洞只在并发下出现;信任客户端发送的价格/总额/限额——服务端应重新推导并验证;忽略“软”功能:优惠券、推荐、忠诚积分、试用、退款,这些是滥用高发目标。