看到那个用脚本抢医院挂号牟利的新闻,第一反应不是道德谴责,而是架构评审失败。这本质上是一个典型的Race Condition漏洞,系统没做有效的并发控制。
- 缺乏设备指纹和行为验证。正常用户点击路径是有随机延时的,脚本则是精准毫秒级请求,这种pattern用基础的WAF就能识别。
- 没有滑动窗口限流。同一IP高频访问应该直接进冷却期,而不是靠验证码这种用户体验极差的手段。
- 业务逻辑层没做幂等校验。挂号应该是原子操作,并发请求进来时必须有分布式锁,而不是先查余量再扣减。
我在肯尼亚做基建系统时见过更粗暴的并发攻击。当时用了Redis做令牌桶限流,配合设备指纹+行为分析,直接把脚本成功率压到0.3%以下。技术对抗就像debug,你堵一个race condition,攻击者就找下一个timing window。依赖用户自觉?那是架构师的失职。