# 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](/zh/deploy/backup.html)) - 日志脱敏:密码、Token 永不入日志(框架已保证,自定义日志注意) ## 入口防护 | 防护 | 配置 | |---|---| | 限流 | rateLimit 默认开启;公网可再降阈值 | | 请求体限制 | api.maxBodyMB + nginx client_max_body_size | | CORS | allowOrigin 收敛到实际域名 | | temp 封禁 | nginx 与应用回退均已封(保持) | | SVG | nginx 强制附件下载(保持,防内嵌脚本) | ## 运维层 - 上线走 `make check` 质量门禁 - 定期跑依赖漏洞扫描(govulncheck / 前端 audit) - 账号:超管口令强且独立;离岗即回收角色 - 审计:操作日志/登录日志保留期符合合规 ## 相关 - [4.11 安全架构设计](/zh/architecture/security.html) - [11.1 部署 Checklist](/zh/deploy/checklist.html)