qing
|
bcec529761
|
fix(static): 第2轮审计修复12项安全缺陷
修复 P1 路径遍历前缀 bypass、代理错误信息泄露、大文件 OOM、邮箱枚举与 CORS 通配;P2 Range 边界、hash 参数校验、db 连接复用、favicon 端口校验、日志批丢、端口解析异常。CSP/SSL 标记为已知限制。审计文档同步更新,修复率 36% → 88%。
|
2026-08-08 02:21:08 +08:00 |
|
qing
|
f53085b2a6
|
fix(static): 禁用 yhdet 系列功能并迁移数据库访问到 db 服务
- 注释禁用 yhdet OAuth 相关常量、辅助函数和视图函数(yhdet_callback/yhdet_login/yhdet_verify/proxy_send_code),消除 P0-2/P0-3/P0-4/NEW-1/NEW-2 风险
- YHDET_SECRET 置空并标注已失效;PRIVATE_SECRET 与 YHDET_PRIVATE_API 一并注释
- 新增 _db_call() 辅助函数,api_check_user 改经 pymsg 调 db 服务,不再直连 SQLite
- 修复注册页验证码:点击获取邮箱验证码时图形验证码输入框被清空的问题
- 更新 static 安全审计报告,修复率 25% → 65%
|
2026-08-03 22:05:02 +08:00 |
|
qing
|
4749e58eeb
|
fix(static): 禁用无认证的 /api/reset_password 接口
|
2026-08-03 14:26:06 +08:00 |
|
qing
|
101aed48be
|
feat(pymsg): RpcClient 新增 retry_on_refused 阻塞等待模式,解决微服务启动顺序依赖
pymsg 客户端:
- MsgClient.call() 新增 retry_on_refused/retry_interval 参数
- retry_on_refused=True 时,ConnectionRefusedError 不抛出,按 retry_interval(默认1s)阻塞重试
- 重试期间每5秒向 stderr 打印等待提示,避免日志刷屏
- 仅对 ConnectionRefusedError 重试;TimeoutError/ConnectionError/RpcError 仍立即抛出
- 默认 retry_on_refused=False,完全向后兼容
- RpcClient 构造函数新增同名关键字参数,call() 支持单次调用覆盖
- 新增 time 模块导入
- 更新 README 文档(新增"启动等待模式"章节和参数表)
各服务(db/dnfs/static):
- _fetch_from_confs() 改用 retry_on_refused=True,移除手动 ConnectionRefusedError 捕获和 sys.exit
- 保留 RpcError(如配置文件不存在)的友好错误处理和 sys.exit(1)
- 启动时不再因 confs 未就绪而退出:pymsg 自动阻塞等待 confs 启动后自动连接成功
- 启动顺序从"刚性要求 confs 先启动"变为"不严格要求启动顺序"
- log_client 保持默认 retry_on_refused=False,后台线程不阻塞(fail-safe 丢弃日志)
- 更新各服务 README 和 confs README 的启动顺序描述
测试验证:
- 基本 call() 正常工作
- retry_on_refused=False 连接拒绝立即抛 ConnectionRefusedError
- retry_on_refused=True 阻塞等待(延迟1.5s启动服务后成功连接,重试日志正常输出)
|
2026-08-01 12:47:08 +08:00 |
|
qing
|
0ae107f953
|
refactor(static): 删除默认配置与本地回退逻辑,confs 改为强依赖
- 配置加载从三层(内置默认值→confs→本地config.ini回退)改为两层(confs 强依赖→环境变量覆盖)
- confs 连接失败直接 sys.exit(1),不再静默使用内置默认值或回退本地 config.ini
- file_config 初始值改为空字符串白名单模板,移除所有内置默认值
- 新增配置完整性校验:server.host/port、directory.root、cors.allowed_origins 必须非空
- ssl 段保留合理默认(enabled=false、cert/key 默认文件名),不强制配置
- 区分错误类型:连接拒绝/RpcError/通用异常分别打印明确错误信息到 stderr
- confs 连接地址改为引导配置(环境变量 CONFS_HOST/CONFS_PORT 优先,默认 127.0.0.1:8010)
- 移除 --config 命令行参数(本地 config.ini 回退已删除)
- 删除 static/config.ini 本地回退文件
- 更新 _run.sh 移除 --config 参数
- 更新 static/README.md 与 confs/README.md 文档
- confs 集成关系描述更新为"confs 最先启动"
|
2026-08-01 12:38:51 +08:00 |
|
qing
|
e007990594
|
feat(dnfs,static): 新增管理员特殊节点(链接/网页代码/图片/文件)
- 信封格式:content 为 {"_sp":...} JSON,普通 Markdown 节点不受影响
- dnfs:add_note/update_note 按 is_admin 强制特殊节点发布权(非管理员 403),
字段与大小校验(url≤2048、code≤512KB、base64≤3.5M 字符),AI 审核剔除 base64 负载
- dnfs:修复存量 bug —— 模块级 _sys.path.insert 未定义导致 import 即 NameError
- static:新增 GET /api/favicon 服务端代理(SSRF 防护:内网地址拦截 + 重定向校验 + 512KB 上限)
- 前端:管理员可见节点类型选择器;链接 favicon 卡片 / 网页可审计可运行 / 图片直显 / 文件下载
- theme.css 补充 select 与特殊节点样式;两个 README 同步更新
|
2026-08-01 04:34:23 +08:00 |
|
qing
|
287cab189d
|
feat(static): 配置接入 confs 统一配置服务
- fsys.py 启动时优先从 confs(127.0.0.1:8010)拉取 static.ini,
支持 CONFS_HOST/CONFS_PORT 环境变量覆盖
- confs 不可用时 fail-safe 回退本地 config.ini
- static.ini 纳入 confs/configs/ 统一分发
|
2026-08-01 02:30:14 +08:00 |
|
qing
|
5839172dae
|
迁移/whoami视图
|
2026-07-30 22:05:12 +08:00 |
|
qing
|
d309f41e47
|
refix
|
2026-07-30 15:52:18 +08:00 |
|
qing
|
8c1956cdeb
|
feat(dnfs): 左上角用户信息面板(默认折叠),新增 /whoami 身份接口
dnfs 新增 POST /whoami:解 Token payload 返回 user/is_admin,无或畸形
Token 返回 login=false(HttpOnly Cookie 模式下 JS 无法读 Token,身份
必须由后端下发);static 加 /whoami 代理(Cookie 转 Bearer);前端
dnfs.html 左上新增 userpanel,镜像 minimap 样式默认折叠,展开显示
用户名/角色/退出登录(POST /logout 清 Cookie 后跳登录页)。
|
2026-07-30 09:31:28 +08:00 |
|
qing
|
f9cf408c82
|
static: 切换 fsys.py 到 Waitress WSGI 服务器
- HTTP 场景使用 waitress.serve(threads=8) 替代 Flask 开发服务器
- SSL 场景回退 Flask 内置服务器(Waitress 不支持 TLS)
- requirements.txt 新增 waitress 依赖
|
2026-07-29 09:10:09 +08:00 |
|
qing
|
4d16bc32fc
|
security: CORS 白名单移除 localhost 并改为 config.ini 驱动
扫描发现生产 CORS 含 http://localhost:9200(硬编码于 fsys.py),且 config.ini 的 cors 段(通配符 *)从未被读取。白名单改为从 config.ini 读取,生产值仅 qsont.me/yhdet.top,localhost 仅限本地开发显式配置。
|
2026-07-28 11:40:19 +08:00 |
|
qing
|
b2ddd9e7e3
|
security: waf 边缘统一注入安全响应头
外部扫描发现站点缺少安全响应头。在 waf 反代/403/502 三个出站路径统一注入 XFO/nosniff/Referrer-Policy/Permissions-Policy/HSTS/CSP,下游同名头一律覆盖避免重复;static 补上漏调用的 apply_security_headers 做纵深防御。
|
2026-07-28 09:19:43 +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
|
18ac572442
|
更新dbv2、删除旧的db1、为static添加log
|
2026-07-27 10:22:16 +08:00 |
|
qing
|
896cfc32ca
|
网友修x改、我修复之后
|
2026-07-26 12:06:56 +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 |
|
qing
|
76d9b4451d
|
默认页面
|
2026-07-24 12:24:37 +08:00 |
|
qing
|
f133288586
|
增加备案号
|
2026-07-23 12:04:56 +08:00 |
|
qing
|
2123bdd254
|
fix frozen path
|
2026-07-23 10:19:14 +08:00 |
|
qing
|
7d8956f0fd
|
fix(fsys): 优化过滤规则,过滤所有双下划线开头的文件文件夹
将原先仅过滤__pycache__的逻辑改为过滤所有以双下划线开头的文件和文件夹,覆盖更多系统内置目录文件
|
2026-07-22 12:28:00 +08:00 |
|
qing
|
779d6ec887
|
解耦视图模块
|
2026-07-22 20:18:45 +08:00 |
|
qing
|
70d467d052
|
init
|
2026-07-20 11:12:29 +08:00 |
|