①【项目背景】
稀土高新区一家做设备租赁的平台,去年双十一前接口被打崩。查日志,同一个 IP 一分钟调了 4.2 万次下单接口,全是脚本在抢优惠券。数据库连接池打满,正常用户下不了单,业务停了 40 分钟。
问题不在流量大,在接口没有身份、没有频次、没有成本。
②【咨询设计】
三层防护:网关层限流、应用层签名、业务层风控。网关用 Nginx + Lua(OpenResty),按 IP、按用户、按接口三个维度做令牌桶,下单接口 10 次/分钟、查询 60 次/分钟,超限返回 429 并记日志。签名用 HMAC-SHA256,参数按字典序拼接,timestamp 偏差超过 300 秒拒绝,nonce 缓存 5 分钟防重放。
业务风控看行为:同一设备 1 小时内切换 5 个账号、收货地址集中在同一栋楼、下单到支付间隔小于 800ms,命中两条进人工审核。很多同行觉得上 WAF 就够了,实际上 WAF 防的是通用攻击,业务接口的「合法请求高频调用」它管不了,必须自己做业务频控。限流阈值不能拍脑袋,得按历史 P99 的 3 倍取值:这套系统日常峰值 120 QPS,下单接口给到 400 QPS,既不误杀促销,也扛得住脚本。
③【施工规划】
限流规则写在上游 Nginx 的 shared dict,多节点用 Redis 做全局计数,Lua 脚本原子操作 INCR+EXPIRE。压测用 JMeter,500 并发持续 10 分钟,观察 P99 从 380ms 降到 120ms,错误率 0.3%。
签名密钥按租户分发,每个商户一对 AK/SK,密钥轮换 90 天,旧密钥并行保留 7 天。日志落 ELK,字段包含 traceId、AK、接口、耗时、限流标记,方便溯源。风控规则用配置中心热更新,不发版。
④【安全补丁】
接口不返回详细错误(避免枚举),统一「请求失败」+ 错误码。管理接口单独域名、单独证书、IP 白名单。所有出参脱敏,手机号中间四位打码。定期做接口资产测绘,把没人维护的老接口下线——这次被打的就是一个 2019 年的老下单接口,文档里都没写。
⑤【验收交付】
验收:JMeter 500 并发 10 分钟,限流准确率 100%,正常用户不受影响;重放攻击 20 次全部拦截;签名错误请求 100% 拒绝;风控命中 37 单,人工复核 35 单确认异常。压测期间接口 P99 稳定在 130ms,未触发数据库慢查询。交付限流配置、签名文档、风控规则表,附压测报告一份,以及应急降级开关说明。
⑥【售后承诺】
接口被刷、被薅,2 小时响应,大年三十 17704868686 也接。大促前免费压测一次,终身免费咨询。
【不舍昼夜技术 · 包头IT全生命周期服务】
业务全闭环:咨询规划、方案设计、工程实施、竣工验收、维保售后。
咱能干的:包头修电脑/装监控/拉网线/做系统/救数据/办软件/卖耗材。
技术范畴:5G通信、大数据服务、信息系统集成、网络安全、商用密码、平面设计。
服务区域:昆区、青山区、九原区、东河区、高新区等包头全境,随叫随到。
技术热线:17704868686(本地专业团队,不舍昼夜为您守候!)