多个请求同时操作同一资源,如果没有锁和原子性保障,就会出现竞争条件:库存超卖、积分重复扣、优惠券领两次。并发安全,是业务逻辑里最隐蔽的漏洞。
## 一、关键操作要加锁
扣库存、扣余额、领券,要用数据库锁或乐观锁。我们做安全把关键操作做成原子性,不同时进两个。
## 二、状态要先检查再改
「检查时通过、执行时已变」是最常见的竞争漏洞。我们做开发把检查和执行放在同一事务里,不分离。
## 三、幂等要保证
同一请求重复提交,结果要一样。我们做安全把关键接口做成幂等,重复不产生副作用。
## 四、并发要压测
上线前用并发场景压一遍,才能暴露隐藏的竞争。我们做安全把并发测试纳入验收,不靠运气。
竞争条件防护,我们按「加锁、同事务、保幂等、压并发」来做,让同时操作不出岔子。
—
担心网站安全、怕被黑被挂马?安全防御 / SSL 托管 / 网站加速我们都能接。微信 jeans2045、QQ 361611074,先聊再给方案。