qing
ec1eb1e805
docs(gateway): 补充前端接入图形验证码说明
...
- README.md v0.5.4 变更记录补充前端改动(register.html/register.js 接入图形验证码)
- SECURITY_AUDIT_20260801.md P0-1 修复说明补充第 5 项前端同步,改动文件清单补全
2026-08-01 02:43:06 +08:00
qing
49f0698b9d
fix(gateway,smtp): 修复邮件轰炸漏洞(审计 P0-1)
...
gateway v0.5.3 → v0.5.4:
1. gateway/src/main.cpp
- /register/send_code 强制 CAPTCHA 校验(经 captcha:8009,Token 一次性消费,fail-closed)
- 新增邮箱级双窗口限流(3 次/小时 + 10 次/天,CAPTCHA 通过后才计入配额)
- 新增 _EMAIL_ADDR_RATE_HOUR / _EMAIL_ADDR_RATE_DAY 限流器实例
2. smtp/smtp_v2.py
- 新增邮箱级长期限流兜底(EMAIL_HOURLY_LIMIT / EMAIL_DAILY_LIMIT,默认 3/10)
- 新增全局熔断(SMTP_HOURLY_LIMIT,默认 100 封/小时,防 smtp 账号被封)
- 预占/回滚与 60s 冷却同模式,发送失败不计入配额
3. gateway/docs/SECURITY_AUDIT_20260801.md
- 新增带日期的安全审计报告
- P0-1 标记为已修复 v0.5.4
4. gateway/README.md
- 更新 /register/send_code 接口文档(CAPTCHA 必填 + 5 层防护)
- 更新版本变更日志
防护层次:IP 限流 → CAPTCHA → 邮箱级限流(gateway)→ 60s 冷却 → 邮箱级限流(smtp)→ 全局熔断
2026-08-01 02:37:15 +08:00
qing
48b45cb44a
修复网关bug
2026-07-31 22:19:56 +08:00
qing
5839172dae
迁移/whoami视图
2026-07-30 22:05:12 +08:00
qing
74610c32c8
微调
2026-07-30 19:03:34 +08:00
qing
a8a190571c
feat(gateway): add /refresh_token API with grace window + refresh limit
...
- POST /refresh_token: accept current Bearer token (or Cookie fallback),
verify RSA signature, check grace window (iat + keep_time * multiplier)
and refresh count limit, then issue a new token.
- Token payload extended with iat, refresh_count, max_refresh fields.
- iat preserves original issue time; created_at updates on each refresh.
- Rate limited: 5 req / 5 min / IP via RateLimiter.
- Config: Token.refresh_grace_multiplier (default 2), Token.max_refresh (default 10).
- Backward compatible: old tokens without new fields still pass proxy checks.
2026-07-30 11:54:31 +08:00
qing
46c3a197be
refactor(auth): 管理员判定上移至 gateway,经 Token payload 下发 is_admin
...
gateway 登录签发 Token 时,账号命中 [Admin] users 白名单即在 payload
写入 is_admin=true(随 RSA 签名保护);dnfs 移除本地 ADMIN_USERS 硬编码,
delete_note/update_note 豁免判断改读 payload 的 is_admin 字段。
旧 Token 无此字段按非管理员处理(安全方向)。
2026-07-30 09:08:33 +08:00
qing
5275b8bf75
feat(smtp): 邮箱验证码连续校验失败 5 次自动作废,防枚举 6 位数字码
2026-07-29 21:57:16 +08:00
qing
c5dd8d198d
feat(smtp): 同一邮箱 60 秒发送冷却,gateway 429 透传 + 前端重发倒计时(gateway v0.5.3)
2026-07-29 20:54:56 +08:00
qing
f4a7aca2fa
update: smtp 验证码有效期 60s 调整为 10 分钟,邮件正文从 CODE_TTL 派生
...
60 秒对邮件送达延迟过于紧张;正文有效期文案改为按 TTL 自动生成避免漂移,前端提示与 README 同步。同时移除 .env 排查用的凭证明文调试打印。
2026-07-29 19:32:44 +08:00
qing
751866d9c1
refix
2026-07-29 11:52:46 +08:00
qing
f0cdaacd85
feat(gateway): 运行日志接入 db 集中式日志(新增 C++ 版 LogC,pymsg 推送 Logs 表)
...
- 新增 gateway/inc/LogC.hpp:异步批量日志客户端(内存队列+后台线程,50条/2秒 flush),
对齐 Python 版 log_client.py,fail-safe 设计(db 不可用静默丢弃)
- main.cpp 全部日志输出迁移:wrapperHttp 双异常分支(>=500 ERROR / 其余 WARNING)、
启动/关闭、登录成功、注册成功、验证码邮件发送成功、代理白名单拒绝
- Makefile 增加 -pthread(LogC 使用 std::thread)
2026-07-29 08:34:14 +08:00
qing
6a0551ab34
fix(gateway): 限流错误码统一429、登录用户不存在改401并拉平时序、pymsg超时常量化(v0.5.2)
...
- 三处限流错误码统一为 429(login 400→429 并修 attampts 拼写;register/send_code 403→429)
- 登录用户不存在不再兜底 500:空结果统一走 401,dummy PBKDF2 校验拉平时序防用户枚举
- db 查询失败消息误名修正:Login (Update Step) Failed → (Query Step)
- 超时常量化:DbC::DEFAULT_TIMEOUT=5.0;_TIMEOUT_CAPTCHA/_SMTP_VERIFY=5.0、_SMTP_SEND=20.0
- 文档:gateway/README 数据库节 email→username 重写、建表归 db/create_sqlite3.sql;根 README 版本号与自动建表描述同步
2026-07-29 00:21:13 +08:00
qing
b07dbf2da5
feat(gateway): 登录成功后更新 Users.last_login(v0.5.1)
...
启用 handleLogin 中被注释的 last_login 更新:经 DbC::call_msg 以
"$now" 哨兵(db 日期适配层转为服务端 UTC 时间)写入,失败按惯例
THROW_EX_CUSTOM 抛 500 由 wrapper 统一处理。README 版本节同步
(原仍停留在 0.3.0-security)。
2026-07-28 23:31:20 +08:00
qing
df518d1adb
feat: 注册强制邮箱验证码(gateway v0.5.0 新增 /register/send_code,pymsg 调 smtp)
2026-07-28 17:29:52 +08:00
qing
7803843155
^-^
2026-07-28 12:37:39 +08:00
qing
6fcb70d235
feat: 登录页接入图形验证码,登录接口强制校验
...
登录页展示 captcha 图形码(点击刷新),登录请求携带 captcha_token/captcha_answer;gateway 的 /login 启用验证码校验,经 pymsg 调 captcha verify 路由(fail-closed),补齐防爆破短板。
2026-07-28 10:15:01 +08:00
qing
44c1e5ef72
feat: captcha 改造为 pymsg/TCP 服务,gateway 新增图形码代理路由
...
captcha 参照 dbv2 统一为 pymsg 协议(image/verify/health 路由),与主干 RPC 栈对齐;gateway 新增 GET /captcha/image 做 HTTP→pymsg 转换,解码 base64 PNG 并以原契约(image/png + X-Captcha-Token)返回浏览器。
2026-07-28 09:54:08 +08:00
qing
4ad3fbfca8
fix: 修复公开页面因旧 Cookie 验签失败误返回 401
...
浏览器会自动给每个请求携带 q4_token,gateway 重启轮换内存 RSA 密钥后旧凭证验签失败,导致无需登录的公开页面也 401。代理层改为仅对需鉴权目标校验凭证,公开目标跳过;前端遇 401 自动跳转登录页自愈。
2026-07-28 09:31:10 +08:00
qing
e89578fa82
security: Token 改为 HttpOnly Cookie 下发,消除 XSS 窃取面
...
登录时网关签发 HttpOnly+Secure+SameSite=Lax 的 q4_token Cookie,前端不再经手 Token;网关代理时支持从 Cookie 验签并向下游注入 Authorization(dnfs 零改动),新增 /logout 清除 Cookie,static 代理路由兼容 Cookie 转 Bearer。
2026-07-28 09:07:12 +08:00
qing
13f3eb8f88
DEV
2026-07-27 21:43:56 +08:00
qing
8c74d93a76
security fixup
2026-07-27 17:28:15 +08:00
qing
6efb792133
C++版本的MsgClient
2026-07-26 21:48:14 +08:00
qing
0e64b3ca26
refix
2026-07-26 14:41:38 +08:00
qing
303d151fce
fix without test
2026-07-26 14:33:30 +08:00
qing
96213d58bd
迁移数据库到db服务
2026-07-26 01:10:21 +08:00
qing
46b8f750ae
fixbug
2026-07-25 13:07:18 +08:00
qing
3d8cf52503
白名单域名:硬编码 https://qs***.me 、 https://www.qs***.me ,加两个本地开发域名(127.0.0.1:8443、localhost:8443)。
...
动态回填 Origin:仅当请求 Origin 命中白名单时才设置 Access-Control-Allow-Origin,否则不返回该头(浏览器会拒绝跨域请求)。
追加 Vary: Origin:告诉缓存该响应因 Origin 而异,避免缓存误用。
移除 Access-Control-Allow-Credentials: true:当前用 Bearer token(请求头),非 cookie,不需要此头;保留反而增加风险面。
2026-07-25 10:22:58 +08:00
qing
7927d87c0a
在循环内先将 char c 转为 unsigned char uc,再传入 std::isupper / std::islower / std::isdigit
2026-07-25 10:20:21 +08:00
qing
6f44d9497b
修复special_headers过滤,修复XFF,添加is_safe_path
2026-07-25 10:10:57 +08:00
qing
bfc361ddfb
之前的修复有遗漏
2026-07-25 10:08:02 +08:00
qing
efae81b230
修复源码信息泄漏以及token无限期问题
2026-07-25 10:05:24 +08:00
qing
13be4bd8ca
修复线程安全问题,以及一个别的
2026-07-25 09:58:25 +08:00
qing
fcf3084d0f
更新文档
2026-07-25 02:11:28 +08:00
qing
202f2804b2
增加waf模块
2026-07-25 01:27:08 +08:00
qing
fbccc5d909
网友修改版
2026-07-25 00:21:16 +08:00
shufeng2012
468d420746
解决冲突(这啥呀*2)
2026-07-24 15:00:34 +08:00
shufeng2012
80d20f5015
解决冲突(这啥呀)
2026-07-24 14:46:26 +08:00
shufeng2012
dc5dc864c3
OK
2026-07-24 12:43:24 +08:00
qingss0
3df9ef8473
update: 更新文件 example.ini
...
Signed-off-by: qingss0 <qingss0@noreply.gitcode.com >
2026-07-24 07:13:55 +08:00
qing
888e1e56f5
9201 => 443
2026-07-23 12:00:38 +08:00
qing
419ae82858
修改HTTP LIBRARY,增加OPTIONS支持
...
修改GATEWAY,修复转发
修改dnfs,暂时不编译(找不到模板)
修改static,能够获取节点
2026-07-22 12:47:13 +08:00
qing
798d5afc4d
加入token时间验证
2026-07-21 23:03:27 +08:00
qing
0399715008
修改后端登陆响应为json,修复登陆页面
2026-07-21 22:27:48 +08:00
qing
aaac8fff12
代理地址限制
2026-07-21 11:49:45 +08:00
qing
70d467d052
init
2026-07-20 11:12:29 +08:00