Become a sponsor

概述
安全能力分布在四个层面:传输层(CORS、受信代理)、认证层(JWT 双令牌、验证码、限流)、授权层(RBAC + 数据权限 + 租户隔离)、工程层(fail-fast 校验、演示模式、生产模式红线)。
access_token 短时效(默认 2 小时)——常规请求凭证
refresh_token 长时效(默认 7 天)——经 /api/oauth2/token 兑换新令牌
登出/撤销 → Token 黑名单缓存(TTL = 剩余有效期),在线列表同步移除密钥经 jwt.secret 配置;生产模式拒绝默认或过短密钥。
| 层 | 机制 | 粒度 |
|---|---|---|
| 接口 | Authz 按 RouteSpec.Permission 校验 | 动作级(sys:user:add) |
| 按钮 | 前端 v-permission 比对下发权限码 | 组件级 |
| 数据 | DataScope 按 dept_id 收敛 + 租户 Scope | 行级 |
三层同源于菜单-角色授权链,改一处即全局生效。
| 防护 | 实现 |
|---|---|
| 暴力破解 | RateLimit:普通接口 120 次/分钟/IP,认证接口 10 次/分钟(更严) |
| 超大请求体 | api.maxBodyMB 上限(默认 10MB) |
| IP 伪造 | 仅受信代理列表(api.proxyIps,支持 CIDR)内的来源才信任 X-Forwarded-For |
| 路径穿越 | 上传文件访问经 SafeJoin 断言物理路径在上传根内;temp 目录封禁 |
| 敏感端点暴露 | api.docs / api.metrics 生产可关闭 |
| 暴力枚举 temp 文件 | temp 临时目录始终 404 |
密码哈希经 utility/crypto 处理(bcrypt 系),数据库不存明文;前后端传输经 HTTPS(生产由 Nginx 终止 TLS)。
启动校验直接拒绝:
写操作一律拒绝、读与登录放行——用于对外演示环境保护数据。
生产上线前逐项核对(完整清单见 11.8 安全加固清单):