2.0 KiB
2.0 KiB
11.8 安全加固清单
:::tip 概述 安全是分层纵深:应用红线(prod 模式)→ 网络暴露面收敛 → 传输加密 → 数据与账号。本页按层给出可执行的加固项。 :::
应用层(硬红线)
| 项 | 要求 |
|---|---|
| app.prod | true——触发启动拒绝 |
| JWT 密钥 | 强随机长串,非默认样例值 |
| captcha.bypassCode | 空 |
| generator.enable | false |
| api.docs | false(或网关封锁 /swagger、/api.json) |
| api.metrics | false 或内网保护 |
| database.debug | false(SQL 不落日志) |
prod 模式不满足以上红线时拒绝启动——这是最后一道闸,不可绕过。
网络层
- MySQL/Redis 端口仅内网(compose 默认仅绑回环,保持)
- 应用 8000 不对公网,仅 Nginx 反代
- api.proxyIps 与真实拓扑一致,严禁 0.0.0.0/0(等于允许伪造来源 IP)
- 防火墙仅放行 443(必要时 80 跳转)
传输层
- HTTPS 全站(Nginx 终止 TLS,HSTS 可选)
- 文件域址(file.domainUrl)同样 https,防混合内容
- 内网 MySQL/Redis 可用 TLS 或纯内网隔离
数据层
- 数据库应用账号最小权限(仅 gin_* DML)
- Redis 设置密码
- 备份文件加密存放(11.9)
- 日志脱敏:密码、Token 永不入日志(框架已保证,自定义日志注意)
入口防护
| 防护 | 配置 |
|---|---|
| 限流 | rateLimit 默认开启;公网可再降阈值 |
| 请求体限制 | api.maxBodyMB + nginx client_max_body_size |
| CORS | allowOrigin 收敛到实际域名 |
| temp 封禁 | nginx 与应用回退均已封(保持) |
| SVG | nginx 强制附件下载(保持,防内嵌脚本) |
运维层
- 上线走
make check质量门禁 - 定期跑依赖漏洞扫描(govulncheck / 前端 audit)
- 账号:超管口令强且独立;离岗即回收角色
- 审计:操作日志/登录日志保留期符合合规