Files
order_site/apps/backend/src/routes/worker.ts
T
yml2213 adaf4ed240 feat(worker-risk): 新增大厅阶梯式风控中间件与鉴权短缓存,惩罚外挂死循环狂刷并支持恶意封号
1. 新增 worker-risk-control 阶梯式风控:单打手/IP 限流 3次/秒(超限返 429);1 分钟累计违规 10 次升级为二级惩罚(锁定 5 分钟秒拒并带 Retry-After);惩罚期内持续暴力刷接口累计 30 次自动判定恶意不改,直接封禁打手账号(status='frozen')并作废所有 session;
2. 风控限流前置挂载在 requireWorkerSession 之前:命中限流或处于风控期时,微秒级在内存中基于 JWT payload 与 IP 拦截,彻底杜绝外挂流量穿透到 PostgreSQL 数据库;
3. verifyWorkerSessionToken 增加 3 秒内存校验缓存:并发请求直接复用内存鉴权对象,同一页面并发发出的多个接口请求仅查 1 次数据库,极大减轻连接池争抢压力;
4. 全套新增风控阶梯机制与自动封号自动化测试,后端 549 项测试全绿通过。
2026-10-02 16:30:53 +08:00

38 lines
1.1 KiB
TypeScript

import { Router } from 'express'
import workerAuthPublicRoutes from './worker/auth-public.js'
import workerAuthSessionRoutes from './worker/auth-session.js'
import workerProfileRoutes from './worker/profile.js'
import workerHallRoutes from './worker/hall.js'
import workerOrdersRoutes from './worker/orders.js'
import workerConsignmentRoutes from './worker/consignment.js'
import { requireWorkerSession } from './worker/session.js'
import { createWorkerHallRiskMiddleware } from '../middleware/worker-risk-control.js'
import { buildNotFoundPayload } from '../utils/http.js'
const router = Router()
router.use(workerAuthPublicRoutes)
// 风控限流前置:在校验数据库 session 之前先行拦截超频/风控请求,避免外挂脚本打满数据库连接
const hallRiskLimit = createWorkerHallRiskMiddleware()
router.use('/hall', hallRiskLimit)
router.use(requireWorkerSession)
router.use(workerAuthSessionRoutes)
router.use(workerProfileRoutes)
router.use(workerHallRoutes)
router.use(workerOrdersRoutes)
router.use(workerConsignmentRoutes)
router.use((req, res) => {
res.status(404).json(buildNotFoundPayload(req))
})
export default router