修复:调整游客取号限流策略
问题:移动网络共享出口 IP 会造成游客取号被误限流。 实现:移除公开取号 IP 限制,改用项目总量与手机号 HMAC 限流,并支持 Retry-After 倒计时。
This commit is contained in:
@@ -24,10 +24,15 @@ SESSION_COOKIE_SECURE=true
|
||||
MIGRATE_ON_START=false
|
||||
MAINTENANCE_INTERVAL=1h
|
||||
MAINTENANCE_BATCH_SIZE=500
|
||||
PUBLIC_TICKET_PROJECT_LIMIT=1000
|
||||
PUBLIC_TICKET_PHONE_LIMIT=5
|
||||
PUBLIC_TICKET_RATE_WINDOW=1m
|
||||
```
|
||||
|
||||
`DATABASE_URL` 必须使用 `require`、`verify-ca` 或 `verify-full` 之一;生产 API 会拒绝 `sslmode=disable` 和 `MIGRATE_ON_START=true`。
|
||||
|
||||
游客取号不按客户端 IP 拒绝请求,而是按项目总量和“项目 + 手机号 HMAC”限流。当前实现为单 Pod 进程内计数;如果 API 扩为多 Pod 且要求全局一致阈值,需要接入共享限流存储。手机号明文不得写入限流键、日志或外部缓存。
|
||||
|
||||
## 结构化接口日志
|
||||
|
||||
- 关键业务 API 的 `http request` 日志包含 `request`、`response`、状态码、耗时和 `request_id`;JSON 正文单向最多记录 64 KiB,超过后只记录字节数与 `body_truncated=true`。
|
||||
|
||||
@@ -254,7 +254,7 @@ Idempotency-Key: <unique-key>
|
||||
| 422 | `INVALID_LAST_NAME`、`INVALID_HONORIFIC` | 修正可选字段 |
|
||||
| 429 | `PUBLIC_TICKET_RATE_LIMITED` | 读取 `Retry-After` 秒数,等待后再试 |
|
||||
|
||||
当前实现的公开取号限流为同一客户端 IP 每分钟最多 20 次,具体阈值以后端配置和网关策略为准,小程序不要将该阈值写死为业务规则。
|
||||
当前公开取号不按客户端 IP 拒绝请求。服务端分别按项目总请求量、项目与规范化手机号组合进行限流;默认窗口为 1 分钟,默认每个项目最多 1000 次、同一项目和手机号最多 5 次。具体阈值以后端配置为准,小程序不要写死业务规则;收到 `429` 时必须读取 `Retry-After` 并等待后再试。
|
||||
|
||||
### 5.3 查询单个号码状态
|
||||
|
||||
|
||||
Reference in New Issue
Block a user