SnowCat Security Bot
|
030ecb206c
|
fix(security): SSL 状态接口不再回吐证书与私钥明文; 配置接口剔除敏感字段
1. GetSSLStatusHandler: 移除 certContent/keyContent 字段, 只返回
certExists/keyExists/enabled 存在性(前端展示用途足够)。
TLS 私钥不应经 HTTP API 下发, 即使是已登录管理员会话也应避免。
2. GetWebUIConfigHandler: 不回吐 token/totpSecret 等敏感字段。
3. UpdateWebUIConfigHandler: 支持 allowOrigins 数组校验与更新。
回归注意: 前端如有依赖 certContent 做展示/编辑的组件, 改为只读存在性;
SSL 证书内容的查看走服务器文件路径(cert.pem/key.pem)。
|
2026-11-13 03:33:44 +08:00 |
|
SnowCat Security Bot
|
fe5dafc527
|
fix(security): CORS 不再反射任意 Origin; X-Forwarded-For 改走 trust proxy
1. cors.ts: 不再把任意请求 Origin 原样反射为 Access-Control-Allow-Origin
(配合 credentials:true = 任意站点可携带 Cookie 跨域调用管理 API)。
新策略: 仅放行 a) 无 Origin 头(同源/直连) b) Origin host 与请求 host 一致
(本机多端口开发) c) webui.json allowOrigins 精确白名单。
新增 Vary: Origin。
2. IP 访问控制: 客户端 IP 不再读取客户端可伪造的 X-Forwarded-For 头,
统一走 req.ip(express 'trust proxy' 控制可信代理)。enableXForwardedFor
字段保留(向后兼容)但不再影响 IP 判定, 需要代理真实 IP 的场景应配置
app.set('trust proxy')。
3. WebUiConfigSchema 新增 allowOrigins: string[] (default []), 与前端
GetConfig/UpdateConfig 同步支持。
回归注意: 若部署依赖旧反射行为的前端跨域, 需在 webui.json 配 allowOrigins。
|
2026-11-13 03:33:30 +08:00 |
|
SnowCat Security Bot
|
6f9d3cdb0f
|
fix(security): SignToken 密钥与密码哈希加固
1. HMAC 密钥: 未配置 NAPCAT_WEBUI_JWT_SECRET_KEY 时不再回落 Math.random()
(可预测密钥=凭证可伪造), 改用 crypto.randomBytes(32) 强随机并稳定缓存。
行为变化: 未配置密钥时重启后所有已签发凭证失效, 用户需重新登录。
2. 密码哈希: generatePasswordHash 升级为 scrypt(随机盐16B, N=16384,r=8,p=1),
存储格式 scrypt$<saltHex>$<hashHex>。
3. comparePasswordHash 双格式兼容: 新格式逐盐 scrypt 校验; 旧格式(单轮
SHA-256 password+'.napcat')仍可校验通过, 保证存量凭证不失效、不丢功能语义。
建议用户改密码一次即迁移到 scrypt。
4. 凭证比较统一走 timingSafeEqual, 消除逐字节短路时序侧信道。
|
2026-11-13 03:33:30 +08:00 |
|
SnowCat Security Bot
|
2ecdc87e40
|
fix(security): webui.json 增补 allowOrigins 默认配置
- 与 WebUiConfigSchema 新增的 allowOrigins 字段对齐(CORS 白名单来源)
- token 保持 'random'(启动时随机生成),配置文件本身不落弱口令
|
2026-11-13 03:33:16 +08:00 |
|
SnowCat Security Bot
|
7ec3cd15c4
|
fix(security): 脱敏启动脚本中的疑似真实QQ号默认值
- snowcat-launch.ps1: -Account 默认值与用法注释改为 <REDACTED>(对齐 release-tools 已脱敏版本)
- snowcat-launch-9937.ps1: 启动参数 -q<号码> 改为 -q<Account> 占位
- 说明: 一次性验证脚本与稳定线启动器不应把真实账号写死入库
|
2026-11-13 03:33:16 +08:00 |
|