Syngnat
|
457a77d13a
|
🐛 fix(oracle): 修复视图 DDL 截断与 ROWID 注入问题
- 完整读取 Oracle DDL CLOB,避免元数据预览截断
- 统一对象设计器视图 DDL 获取和格式化
- 仅对物理表注入 ROWID,避免 ORA-01445
|
2026-07-30 23:20:03 +08:00 |
|
Syngnat
|
c4e7142309
|
🐛 fix(mac-window): 固定使用 macOS 原生窗口控制
- macOS 窗口创建时启用原生标题栏与红黄绿控制
- 移除主题切换及持久化偏好,兼容旧前端禁用调用
- 保持 Windows/Linux 自定义无边框窗口并补充回归测试
|
2026-07-30 21:06:12 +08:00 |
|
Syngnat
|
aec34a031a
|
🐛 fix(dameng): 修复表设计字段注释加载失败
增加 SYSCOLUMNCOMMENTS 原生字典降级查询,按字段名合并注释;原生字典无权限时保留基础元数据,并补充回归测试。
|
2026-07-30 20:44:12 +08:00 |
|
Syngnat
|
3ea3223749
|
🐛 fix(query-editor/logging): 修复达梦SQL美化并完善诊断日志
- 为达梦和自定义 DM8 连接启用 SQL 格式化位置占位符
- 记录 SQL 美化方言、作用域、耗时及脱敏错误信息
- 将 Wails 前端日志接入 GoNavi 应用日志文件
- 启动时输出应用版本及实际驱动模块和代理版本
- 补充达梦占位符、日志落盘与启动诊断回归测试
|
2026-07-30 18:17:08 +08:00 |
|
Syngnat
|
b293bf0da6
|
🐛 fix(sync/mysql): 修复批量导入占位符超限
- 识别 MySQL Prepared Statement 占位符超限错误
- 对被服务端拒绝的批量 INSERT 自动递归拆批重试
- 增加 24 列 1000 行数据同步回归测试
|
2026-07-30 17:41:01 +08:00 |
|
Syngnat
|
bf3f221857
|
🐛 fix(vastbase): 修复含点表名误识别为模式 (#757)
- 对含点号或双引号的 PostgreSQL-like 标识符进行可逆引用
- 让 Vastbase 表列表复用统一的 PostgreSQL 元数据解析
- 增加含点表名保持标识符边界的回归测试
Refs #757
|
2026-07-30 15:59:28 +08:00 |
|
Syngnat
|
b64c7e92d1
|
⚡️ perf(kingbase): 消除 SQL 查询周期性探活延迟
- 成功 SQL 往返后刷新缓存连接健康时间
- 避免活跃连接跨过旧时间边界时同步重复 Ping
- 保留空闲连接探活、失效清理与重建机制
- 新增 Kingbase 查询健康时间回归测试
|
2026-07-30 14:32:52 +08:00 |
|
Syngnat
|
4c2bec0487
|
🐛 fix(proxy): 修复 HTTP CONNECT 超时竞态
- 将 context deadline 触发的 socket timeout 归一化为 DeadlineExceeded
- 统一 CONNECT 请求写入和响应读取的取消错误语义
- 新增 deadline timeout 回归测试并完成高频握手验证
|
2026-07-30 12:05:57 +08:00 |
|
Syngnat
|
09a1bceabf
|
⚡️ perf(kingbase): 优化数据表首屏加载性能
- 连接池保留 Kingbase 空闲连接,减少重复建连开销
- 首屏数据查询完成后再加载编辑定位元数据
- 合并列、索引和外键元数据请求并保留强制刷新
- 新增连接复用、加载时序和请求缓存回归测试
|
2026-07-30 11:26:50 +08:00 |
|
Syngnat
|
cb3a5f6b61
|
🐛 fix(rabbitmq): 修复连接类型回退与管理端口误用
- 以当前选中的数据源类型构造测试和保存配置,避免 RabbitMQ 被保存为 MySQL
- 拦截默认 AMQP/AMQPS 端口并提示 Management API 端口
- 保留显式 HTTP/HTTPS 管理地址的自定义端口能力
- 补充连接类型漂移和端口校验回归测试
|
2026-07-29 20:35:04 +08:00 |
|
Syngnat
|
bd259e4e51
|
🐛 fix(mongodb/query-editor): 修复受限账号连接与不限行数
- MongoDB 指定数据库时保留连接校验并跳过全库枚举
- 允许查询最大行数为 0 并持久化不限设置
- 补充数据库枚举与不限行数持久化回归测试
Refs #741
Refs #752
|
2026-07-29 17:19:15 +08:00 |
|
Syngnat
|
4222bbbd48
|
✨ feat(redis): 支持 List 数据倒序显示
- 为索引列增加倒序优先排序,保持默认正序不变
- 倒序读取真实尾部窗口并保留原始 Redis 索引
- 补充前后端回归测试并同步 Wails 绑定
Refs #751
|
2026-07-29 11:32:58 +08:00 |
|
Syngnat
|
e5e80cbbe8
|
🐛 fix(nacos): 完善多版本连接与配置服务可靠性
- 支持 Nacos v1、v2、v3 就绪探测与受限账号连接
- 强化认证、缓存、单飞连接和关闭代际的并发边界
- 修复监听重复事件、导入身份碰撞及部分失败误报成功
- 补齐只读保护、结构化错误与六语言提示
|
2026-07-28 23:51:17 +08:00 |
|
Syngnat
|
199ab4fea1
|
🐛 fix(proxy): 修复 Nacos 隧道目标透传与握手取消
- 保留 Nacos 远端 Host、TLS SNI 与默认 8848 端口
- 规范化 HTTP、SOCKS5 与 SSH 代理组合路径
- 让停滞的 HTTP CONNECT 响应上下文取消并保持成功隧道可用
|
2026-07-28 23:51:01 +08:00 |
|
Syngnat
|
875de21e5a
|
fix(update): 统一更新缓存与成功清理目录 (#771)
统一 macOS、Windows 和 Linux 更新包到用户缓存目录,失败时回退系统临时目录。成功更新后清理整个
GoNavi/updates,失败时保留安装包、脚本和日志,并补充跨平台路径与清理测试。
|
2026-07-28 22:40:21 +08:00 |
|
liuqiufeng
|
9c42cfeec4
|
fix(update): 统一更新缓存与成功清理目录
统一 macOS、Windows 和 Linux 更新包到用户缓存目录,失败时回退系统临时目录。成功更新后清理整个 GoNavi/updates,失败时保留安装包、脚本和日志,并补充跨平台路径与清理测试。
|
2026-07-28 22:11:33 +08:00 |
|
mango
|
880ed671c9
|
🐛 fix(redis): 完善 Issue #759 全量扫描逻辑
|
2026-07-28 21:35:53 +08:00 |
|
mango
|
498e9b804b
|
🐛 fix: 修复 Issue #759 (Closes #759)
|
2026-07-28 20:00:53 +08:00 |
|
Syngnat
|
8472c56812
|
🐛 fix(nacos): 兼容多版本 API 与精确分组查询
- 自动探测并缓存 Nacos v1、v2、v3 API,区分接口缺失与鉴权失败
- 适配命名空间、配置、历史、Beta、服务实例和监听协议差异
- 修复 v1/v2 响应解包及 v3 跨页 Group 精确过滤
- 补充三代 API、认证降级、监听超时和命名服务回归测试
|
2026-07-28 19:22:43 +08:00 |
|
Syngnat
|
cef273f228
|
✨ feat(nacos): 新增 Nacos 数据源管理能力
- 支持 Nacos 连接测试及多命名空间资源树
- 提供配置搜索、发布、删除、历史回滚和变更监听
- 增加 Beta 发布、配置导入导出与批量操作
- 支持服务发现、实例管理、只读保护和多语言界面
- 补充 Wails 接口绑定及前后端回归测试
Refs #756
|
2026-07-28 15:58:22 +08:00 |
|
Syngnat
|
ce9f5cffb9
|
🐛 fix(oracle): 修复大对象查询导致客户端崩溃
- 限制交互查询中 BLOB、CLOB 和 LONG 字段的预览大小
- 将默认预取行数降至 25,控制大对象批量加载内存
- 保持流式导出完整内容并补充回归测试
|
2026-07-28 15:28:23 +08:00 |
|
AutumnNazi
|
de26949a5e
|
🐛 fix(dameng): 修复设计表无法读取表注释
- 从达梦表注释字典视图补充读取表备注
- 将表注释安全追加到建表 DDL,并保留元数据查询失败降级
- 增加 schema、转义、去重及真实 GetCreateStatement 回归测试
|
2026-07-28 10:44:16 +08:00 |
|
Syngnat
|
c192b6cc3a
|
🐛 fix(dameng): 修复索引元数据查询与错误提示
修正 ALL_IND_COLUMNS 与 ALL_INDEXES 的索引归属关联;保留复合索引顺序、唯一性与索引类型元数据;索引加载失败时显示错误,并补齐回归测试和多语言文案。
Fixes #735
|
2026-07-27 22:57:50 +08:00 |
|
Syngnat
|
5db921c99e
|
🐛 fix(ai): 隐藏 Claude CLI 后台控制台窗口 (#749)
## 背景
Windows 下选择 Claude CLI 作为当前 AI Provider 后,执行 SQL 美化、AI 洞察等会调用 Claude CLI
的功能时,会弹出 Claude 控制台窗口并打断界面操作。
Closes #694
## 变更点
- 统一 Claude CLI 认证检查、非流式聊天与流式聊天的命令创建入口
- Windows 子进程启用 `HideWindow` 与 `CREATE_NO_WINDOW`,同时保留已有启动标志
- 通过 build tag 保持 macOS/Linux 原有进程行为
- 新增 Windows 回归测试,覆盖隐藏窗口参数和既有 flags 保留逻辑
## 影响范围
- 仅影响 Claude CLI Provider 在 Windows 上启动后台子进程的窗口行为
- 不修改 AI 配置、请求参数、认证流程或前端交互
- 不新增依赖,不涉及数据迁移;macOS/Linux 行为不变
## 验证
- `go test ./internal/ai/provider -run ClaudeCLI -count=1`
- `go test ./internal/ai/service -count=1`
- `go vet ./internal/ai/provider`
- Linux amd64 与 macOS amd64 包级交叉编译通过
|
2026-07-27 22:23:54 +08:00 |
|
AutumnNazi
|
cdc484fd96
|
🐛 fix(ai): 隐藏 Claude CLI 后台控制台窗口
- 统一认证检查、非流式与流式请求的 Claude CLI 命令创建
- Windows 启用 HideWindow 与 CREATE_NO_WINDOW,并保留已有启动标志
- 增加跨平台进程配置与 Windows 回归测试
|
2026-07-27 22:15:52 +08:00 |
|
liuqiufeng
|
5255aa221d
|
Merge branch 'Syngnat:dev' into dev
|
2026-07-27 21:23:56 +08:00 |
|
liuqiufeng
|
203e8aac6c
|
fix(redis): 避免 Redis 搜索因稀疏 SCAN MATCH 返回空结果
|
2026-07-27 21:22:22 +08:00 |
|
Syngnat
|
70282286fc
|
Merge pull request #744 from AutumnNazi/fix/cloud-backup-provider-separation
|
2026-07-27 20:47:37 +08:00 |
|
Syngnat
|
770243e0da
|
🐛 fix(kingbase): 修复开表与 ER 图加载缓慢问题
- 解耦 Kingbase 首屏查询与编辑定位元数据加载
- 使用单次全库外键快照替代 ER 图逐表扫描
- 补充大规模表结构和异步元数据回归测试
Fixes #731
Fixes #732
|
2026-07-27 20:39:08 +08:00 |
|
AutumnNazi
|
ee53a56183
|
✨ feat(cloud-backup): 支持加密云端备份与选择性恢复
- 新增 WebDAV 与 S3 独立配置、凭据和远端状态管理
- 使用 Argon2id 与 AES-256-GCM 加密连接及配置备份
- 支持分类备份、自动同步、远端预览和一次性确认恢复
- 连接与已保存查询按 ID 合并恢复,并保留本地独有数据
- 补充前后端回归测试、六语言文案和恢复失败回滚
|
2026-07-27 20:20:00 +08:00 |
|
Syngnat
|
999218dccc
|
Merge pull request #743 from virgosgod-maker/fix/go-test-environment
|
2026-07-27 19:34:36 +08:00 |
|
mango
|
0bf8d28e22
|
🐛 fix(ci): 固定后端测试资源与 Java 编码
|
2026-07-27 19:14:37 +08:00 |
|
mango
|
5a16c2b201
|
🐛 fix(test): 修复后端测试环境与跨平台隔离
|
2026-07-27 19:05:06 +08:00 |
|
mango
|
596be31601
|
🐛 fix: 修复 Issue #734 (Closes #734)
|
2026-07-27 17:44:27 +08:00 |
|
Syngnat
|
b80989cb7b
|
🐛 fix(nativewindow): 修复主进程退出后子窗口残留
- 启动独立窗口时传递并校验主进程 PID
- 按平台监控父进程并在其退出后关闭子窗口
- 补充 PID 解析、真实父进程退出和异常探测回归测试
|
2026-07-27 08:43:12 +08:00 |
|
Syngnat
|
d48c7d06d6
|
🐛 fix(updater): 修复状态竞态与后台进程回收
|
2026-07-27 00:14:03 +08:00 |
|
Syngnat
|
970d861c39
|
🐛 fix(driver-agent): 为 IPC 超时与关停增加可取消回收
|
2026-07-27 00:11:16 +08:00 |
|
Syngnat
|
76249c00b9
|
🐛 fix(ssh): 为共享端口转发增加引用计数与失败回滚
|
2026-07-27 00:07:42 +08:00 |
|
Syngnat
|
546b71945d
|
🐛 fix(tdengine): 编码 DSN 用户名与密码
|
2026-07-26 23:33:48 +08:00 |
|
Syngnat
|
f8b698d9ae
|
🐛 fix(ai): 修复流式终态与 Provider 并发选择
|
2026-07-26 23:29:01 +08:00 |
|
Syngnat
|
e6d77cd7ab
|
🐛 fix(transaction): 修复前端刷新后托管事务变成孤儿并长期持有行锁
复现路径:SQL 编辑器执行 DELETE 进入托管事务后不点提交、直接刷新前端,再执行同一条 DELETE,
会卡满 innodb_lock_wait_timeout(默认 50 秒)并报 Error 1205 Lock wait timeout exceeded,
只能重启应用才能恢复。
根因:待提交事务的 ID 只存在于前端组件内存(useSqlEditorTransactionController 的
useState/useRef),持久化状态里只有 commitMode/autoCommitDelayMs 这类设置。前端一旦刷新,
残留在 a.sqlTransactions 中的条目就再也无法被提交或回滚,却仍开着并持有 pinned 连接与行锁。
原先只有显式提交/回滚与应用退出(rollbackPendingSQLTransactionsOnShutdown)两条清理路径,
刷新不经过其中任何一条。
- 新增 Wails OnDomReady 钩子(每次 WebView 导航完成即触发,刷新必然命中),
回滚所有已无法被引用的托管事务。首次加载时事务表为空,故无副作用;
本应用是 React SPA,正常使用中不会产生整页导航,不会误杀活跃事务
- rollbackPendingSQLTransactionsOnShutdown 抽出公共实现,审计来源区分
app_shutdown 与 frontend_reload,便于事后区分两类自动回滚
- 补 4 项回归测试:回滚并释放会话、空表无副作用、nil 容错、已完成事务不重复回滚。
已确认禁用钩子后首个用例必定失败(回滚 0 次)
顺带说明:界面把 Error 1205 归类为「查询超时或被取消」并建议「检查执行计划、调整超时时间」
是误导——1205 是行锁等待超时,成因是另一事务持锁。该错误语义映射未在本次修改范围内。
|
2026-07-26 22:11:10 +08:00 |
|
Syngnat
|
88b427c41a
|
🔥 remove(go-test): 删除后端读取源码文本断言的测试函数
- 移除 99 个仅读取同包 .go 源码做字符串包含断言的测试函数,共 3746 行
- 判据为函数内出现 os.ReadFile 读取 .go 文件且剥离字符串字面量后不调用任何生产代码
- 保留 2 个同时调用生产接口的测试函数,清理 45 个文件中失去引用的 import
- go build、go vet 通过,测试失败集合由 40 项减至 39 项且无新增,减少项为已长期失败的墓碑用例
|
2026-07-26 21:37:22 +08:00 |
|
Syngnat
|
3ea04f5530
|
🐛 fix(webserver): 修复 X-Forwarded-For 可绕过登录失败锁定
- clientIP 改为以不可伪造的直连对端地址为准:该头完全由客户端控制,原实现无条件采信其首值,
直连攻击者每次请求换一个值即可拿到全新限流桶,彻底绕过 5 次失败锁定
(口令下限仅 6 位可在线爆破),并使 attempts map 无界增长;且每次尝试都会触发一次
64 MiB 的 Argon2id 推导,形成认证面的 CPU/内存 DoS
- 新增 GONAVI_WEB_TRUSTED_PROXIES(IP/CIDR 逗号分隔):仅当对端命中该列表时才采信
X-Forwarded-For,并取最右侧的非可信跳(左侧可被客户端预先伪造);非法值不予采信,
避免用任意字符串制造新桶
- loginAttemptTracker 增加条目上限与过期清扫:条目原先只在登录成功或同 key 再次 allow 时
才删除,分布式来源下会单向增长
- docker.web-server.env.example 补充新变量说明(含反代部署下必须配置的提示)
- 补 4 项回归测试,已确认还原为采信 XFF 首值后必定失败
|
2026-07-26 21:08:49 +08:00 |
|
Syngnat
|
0c10be0aa2
|
🐛 fix(db): 修复大整数与 IP 列显示丢值、会话路径方言退化、MariaDB 漏影响行数校验
- normalizeQueryValue 的 Struct 分支补「指针接收者 Stringer」探测:big.Int 的 String() 定义在
*big.Int 上,clickhouse-go 对 Int128/UInt128/Int256/UInt256 列返回 big.Int 值,原先落到
fmt.Sprintf("%v") 变成内部结构体转储,前端与 CSV/JSON/XLSX 导出的原始数值完全不可恢复
- Slice 分支对具名字节切片先试 Stringer、再回退 bytesToDisplayValue:net.IP 是具名 []byte,
不匹配上层的 case []byte,原先被展开成 [192,168,0,1] 而非 "192.168.0.1"
- MySQL/MariaDB 的 OpenSessionExecer 补回扫描方言:原先传空串使 DATE 列在会话路径
(流式导出、SQL 编辑器托管事务)被格式化成 RFC3339,与网格直查的 2006-01-02 不一致
- MariaDB.ApplyChanges 的 DELETE/UPDATE 补 requireSingleRowAffected(与 mysql_impl 对齐):
原先丢弃 sql.Result,无主键表上一次单元格编辑可能静默改写多行,或 0 行命中仍提示提交成功
- 补 5 项回归测试,并断言既有的 MySQL BIT 位掩码语义未被破坏
未修:query_value.go 的 PG bit/varbit 文本位串被当作二进制位掩码解释。该缺陷需要给 6 个
PG 系驱动都补 scanDialect 才能可靠区分方言;仅按字节内容启发式会把 MySQL BIT(8) 存值 48
(字节 0x30 即 ASCII '0')误显示为 "0",属于用一个静默错误换另一个,故留待单独处理。
|
2026-07-26 20:52:58 +08:00 |
|
Syngnat
|
663ef8259b
|
🐛 fix(app): 修复已存查询导入丢失 SQL 与连接配置并发写入互相覆盖
- saved_queries.Import 改为复制 file.Queries 再原地更新:原先直接引用底层数组,下标写会同时
污染 file.Queries,使 replaceQueries 拿到的「磁盘旧快照」已含新值,比较 previous.SQL 相等
而跳过写盘。同 ID 同名条目只改 SQL 时,元数据已更新但 .sql 文件仍是旧内容,新 SQL 永久丢失
- connections.json 增加包级互斥 savedConnectionsMu:savedConnectionRepository() 每次返回新
实例,实例级锁无效。Save/Delete/Duplicate 与 migrateSavedConnectionSecrets 的
load→修改→saveAll 序列纳入同一临界区,避免后写者用旧列表整体覆盖前写者导致连接静默丢失,
以及 Delete 删除密文后被 Save 写回而产生的僵尸连接
- saveAll 改为临时文件 + Sync + 原子替换:os.WriteFile 先截断,进程在该窗口被杀会留下空的
connections.json;原子替换后读者只会看到旧文件或完整新文件,只读路径无需加锁
- 补 4 项回归测试,均已确认在移除修复后必定失败(12 条并发保存、并发混合增删的 JSON 完整性、
原子写无临时文件残留、同名改 SQL 的落盘)
|
2026-07-26 20:36:04 +08:00 |
|
Syngnat
|
2bdbdc9382
|
🐛 fix(sync): 修复分页比对与 DDL 字面量缺反斜杠转义导致的错删行与语法错误 DDL
- quoteSyncSQLString 改为方言感知:新增 syncDialectEscapesBackslash,对 mysql/mariadb/
clickhouse/tdengine/starrocks/diros/oceanbase 先翻倍反斜杠再翻倍单引号;postgres 系、
sqlserver、sqlite、duckdb 保持原样(翻倍反而会写入两个反斜杠并损坏比对)
- 含反斜杠的主键原先在 IN 列表里被目标库解释成别的字符串,导致源端存在的行先被判为插入、
反查时又匹配不到而被判为删除并真的从目标删掉,最终 Success=true 但目标永久缺行
- dbType 逐层传入 formatSyncSQLLiteral 的 3 个调用点:buildPKInSelectQuery、
buildKeysetPagedTableQuery、buildSourceQueryPKInSelectSQL
- escapeMySQLStringLiteral 同类修复:列注释与 DEFAULT 值内联进 MySQL/ClickHouse DDL 时,
以反斜杠结尾的注释会让 COMMENT '...\' 吞掉闭合引号并生成语法错误的 DDL
- 补 5 项回归测试,方言分组做双向断言(漏加与误加都会失败)
|
2026-07-26 20:19:29 +08:00 |
|
Syngnat
|
01c3c2f9c9
|
🐛 fix(sync): 修复 SQL 结果集全量覆盖先清空目标表导致的数据不可恢复丢失
- 加自表守卫:源查询是任意 SQL、无法可靠判断是否引用目标表,故抽出 isSameSyncEndpoint
做端点级比较,源与目标同端点时退回非分页路径(该路径先把源行读入内存再清空,语义安全)。
分页叠加自表覆盖本质不可行:清空后的分页会读到空表,目标最终只剩第一页数据
- 改为先读首页、成功后才清空目标,与 tryApplyDirectImportInPages 保持一致。
原顺序先 TRUNCATE 再首读,源查询一旦报错就留下被清空且无法恢复的目标表
(TRUNCATE 在 MySQL 上是 DDL、隐式提交不可回滚),而函数还把读到 0 行当作同步成功
- isSamePhysicalSyncTable 改为复用 isSameSyncEndpoint,表名比较语义不变
- 补 4 项回归测试:端点比较、表名语义不变、自表退回且退回前未清空、先读后清顺序
|
2026-07-26 20:11:52 +08:00 |
|
Syngnat
|
1128c501c3
|
🐛 fix(mqtt): 修复关闭连接与在途消息拉取竞争导致的进程崩溃
- pahoMQTTRuntime 增加 RWMutex 与 activeClient() 快照取用:FetchMessages 会在 4~30 秒
等待窗口结束后才在 defer 里解引用客户端,而 Close() 原先无锁把 client 置为 nil,
保活探测失败或用户断开连接时那次 nil 接口方法调用会崩掉整个桌面进程
- Close() 改为只置 closed 标志并断开连接,不清空在途读者会解引用的字段;并保证幂等
- FetchMessages/Publish/Ping 全程改用入口处的客户端快照,defer 中的 Unsubscribe 同样使用快照
- MQTTDB.Close() 不再把 m.runtime 置 nil,消除 QueryContext/Publish 通过 nil 检查后
解引用的窗口;关闭后的 runtime 对所有调用返回「连接未打开」,报错口径不变
- 补 3 项回归测试:在途读者快照可用性、并发 Close 交错、Close 幂等性
|
2026-07-26 20:08:07 +08:00 |
|
Syngnat
|
e8ef3b3f01
|
🐛 fix(webserver): 修复登录/初始化页 next 参数的 DOM XSS 与开放重定向
- 客户端补归一化:两个页面脚本都用 location.search 重读原始 next,服务端过滤对其完全无效。
新增共用的 safeNextTarget(),用 URL 解析器做同源判定(javascript:/data: 的 origin 为 null),
归一化后再交给 window.location.replace,堵住 ?next=javascript:... 在页面自身源内执行、
进而携带会话 Cookie 调用 /api/invoke 读取全部已保存连接并执行任意 SQL 的链路
- 服务端补 /\ 缺口:抽出 isSafeLocalRedirect 供 resolvePostAuthRedirect 与
buildAuthRedirectURL 共用。WHATWG URL 解析器对 special scheme 把反斜杠等价为斜杠,
故 /\evil.com 会被解析成 //evil.com,原先仅查 // 前缀挡不住该变体
- 补回归测试:覆盖 javascript:/data:///evil.com//\evil.com 等载荷,
并断言两个页面脚本不再出现未归一化的 next 裸读
|
2026-07-26 19:56:50 +08:00 |
|
Syngnat
|
6a21b75ff7
|
🐛 fix(export): 补齐 SQL 导出反斜杠转义漏掉的 ClickHouse 与 TDengine 方言
- isMySQLLikeDBType 更名为 dialectEscapesBackslashInStringLiteral,按语义而非协议族命名
- 新增 clickhouse/tdengine/taos:这三个方言的字符串字面量同样支持 C 风格反斜杠转义,
上一提交漏掉会导致其 dump 还原时仍被静默改写
- 补充双向断言:漏加方言(数据被改写)与误加方言(反斜杠被写成两个)都会测试失败
|
2026-07-26 19:43:41 +08:00 |
|