Skip to content

fix: 修复签到/群管/快问快答插件的 SQL 注入,并沉淀 SDK 级参数化查询 - #19

Merged
excniesNIED merged 8 commits into
mainfrom
unknown repository
Aug 9, 2026
Merged

fix: 修复签到/群管/快问快答插件的 SQL 注入,并沉淀 SDK 级参数化查询#19
excniesNIED merged 8 commits into
mainfrom
unknown repository

Conversation

@ghost

@ghost ghost commented Aug 8, 2026

Copy link
Copy Markdown

📌 背景

jn.database.query/exec 只暴露裸 SQL 接口,插件里直接拼接用户输入(QQ 昵称、
群消息原文)存在 SQL 注入风险。本次对全部实际使用数据库的插件做安全加固。

🛠️ 改动

  • checkinuser_name(QQ 昵称,用户可控)等 9 处 SQL 全部改用参数化查询
    (SQL 用 ? 占位,由数据库驱动做参数编码),彻底消除注入面
  • redrock_group_managerget_kv/set_kv/migrate_old_violations
    key/value(含群消息原文)改为参数化
  • redrock_quizget_game/save_game/delete_game 的 key/value 改为参数化
  • sdk/jn.lua:同步 jn.database.query/exec 类型注解,补充「优先参数化、
    无法参数化时用 jn.sql.escape 兜底转义」的用法说明
  • 同步两个插件的 jn.lua SDK 副本

✅ 安全影响

  • 插件代码中已无任何 jn.sql.escape 实际调用,全部改为参数化查询
  • 数字字段(user_id/group_id 等)在 float64 精确范围内,无精度损失

🧪 验证

  • 依赖引擎侧 query/exec 参数化支持(见 JuanNiang-Neo 对应 PR)

TuF3i added 3 commits August 9, 2026 02:36
- checkin: user_name(QQ昵称) 直接拼入 SQL 的注入点,改用 jn.sql.escape 转义
- redrock_group_manager: set_kv/get_kv/migrate 的 key/value 拼接统一转义
- redrock_quiz: save_game/get_game/delete_game 的 key/value 统一转义
- sdk: 新增 jn.sql.escape(PostgreSQL 单引号翻倍转义),供所有插件复用
- 同步 group_manager/quiz 插件内的 jn.lua SDK 副本
- jn.database.query/exec 支持可选绑定参数(SQL 用 ? 占位)后,
  将 9 处拼接 SQL 全部改为参数化:checkin 4 处、group_manager 3 处、quiz 3 处
- 数字/字符串字段均由数据库驱动参数编码,无需再手动转义
- 同步 sdk/jn.lua 与两个插件的 jn.lua SDK 副本的类型注解
@ghost
ghost requested a review from excniesNIED August 8, 2026 18:55
@ghost ghost added the enhancement New feature or request label Aug 8, 2026
TuF3i added 5 commits August 9, 2026 02:58
此前一次 revert+合并冲突时,冲突标记被误提交(188ccef),导致
redrock_group_manager 的 pluggin.yaml 无法解析、store 校验失败。
本次移除冲突标记,保留正确版本:redrock_group_manager 1.2.5、
plugins.json 时间戳 2026-08-09T02:57:36+08:00。
@excniesNIED
excniesNIED merged commit 539a042 into JuanNiangDev:main Aug 9, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants