fix(security): 修复 P2 中危项(cookie/协议限速/路径遍历/默认口令/中继TLS/安全头/信息泄露)
- 会话 cookie 增加 Secure 标志;新增 [web].cookie_secure 配置 (默认 true,仅本地 HTTP 调试关闭;缺失字段按安全默认处理) - SMTP/IMAP/POP3 认证接入封禁体系(store.RecordAuthFailure 与 Web 共用 ban_entries):失败计数达 ban.max_fail_attempts 即封禁 IP, 已封禁 IP 拒绝认证,堵住协议层暴力破解 - 附件存储路径遍历防护重写:FullPath 白名单校验(UUID 文件名格式) + baseDir 前缀兜底,非法路径返回错误;Save 扩展名白名单化 - 初始管理员不再使用 admin/admin:密码取 MAILGO_ADMIN_PASSWORD 或 随机生成并打印一次;新增 MustChangePassword 首登强制改密 (管理员重置密码同样触发) - 外发中继默认验证 TLS 证书(保护 AUTH 凭据,防 MITM),直投 MX 保持机会式 TLS;新增 outbound.relay_tls_insecure 开关(默认 false) - 新增安全响应头中间件:HSTS、X-Frame-Options DENY、nosniff、 Referrer-Policy、基础 CSP(frame-ancestors 'none' 防点击劫持, connect-src/form-action 'self' 防数据外泄) - LDAP/OAuth 登录错误统一为通用文案,原始错误只写日志, 不再回显邮箱/内部细节(防用户枚举与信息泄露) - 新增 25 个回归测试:cookie 标志、封禁阈值、路径遍历用例、 中继 TLS 验证(自签证书 STARTTLS 集成)、安全头、OAuth 文案 部署注意:升级后所有会话失效需重新登录;若直接以 HTTP 提供 服务需显式配置 cookie_secure = false。
This commit is contained in:
@@ -85,6 +85,8 @@ addr = ":8080" # 监听地址,支持 TCP 端口或
|
||||
secret_key = "" # Web 会话签名密钥;留空时首次启动自动生成
|
||||
# 随机密钥并写入本文件(请妥善备份,泄露/丢失
|
||||
# 分别意味着会话可被伪造/所有登录态失效)
|
||||
cookie_secure = true # 会话 cookie 仅通过 HTTPS 传输(Secure 标志);
|
||||
# 仅本地 HTTP 调试时才改为 false
|
||||
|
||||
[smtp]
|
||||
addr = ":25" # SMTP 明文端口
|
||||
@@ -143,6 +145,9 @@ relay_port = 587 # 465 = 隐式 TLS,其他端口按需
|
||||
relay_user = "" # 中继认证用户名(AUTH PLAIN)
|
||||
relay_password = "" # 中继认证密码
|
||||
relay_starttls = true # 非 465 端口是否使用 STARTTLS
|
||||
relay_tls_insecure = false # 是否跳过中继服务器 TLS 证书验证;
|
||||
# 默认验证证书(保护中继凭据),仅自签证书
|
||||
# 内网中继且明确知晓风险时才改为 true
|
||||
ip_family = "ipv4" # 出站地址族:ipv4(默认)| ipv6 | auto
|
||||
source_ip = "" # 出站源地址绑定(如静态 IPv6 地址),留空由内核选择
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user