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 项测试全绿通过。
38 lines
1.1 KiB
TypeScript
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
|