Muska-Ami / CatSero

一个基于MiraiMC的QQ群功能&MC功能插件
https://blog.ovome.icu
GNU Affero General Public License v3.0
29 stars 3 forks source link

关于申请白名单的漏洞 #89

Closed Natsusomekeishi closed 1 year ago

Natsusomekeishi commented 1 year ago

问题描述

修改申请白名单的配置为format: "申请白名单%name%时,玩家申请白名单,如果发“申请白名单 XXX”或者“申请白名单XXX ”,会记录空格作为白名单ID录入数据库,导致玩家无法进入服务器。

复现方法

  1. 将申请白名单的配置改为format: "申请白名单%name%"
  2. 启动服务端,发送“申请白名单 XXX”(中间有空格)或者“申请白名单XXX ”(XXX后面有空格)
  3. 添加成功后,尝试进入服务器,报错,没有白名单无法进入。

服务端版本

purpur-1.19.3

CatSero 版本

2.3

服务端日志

无特殊内容

额外说明

No response

Muska-Ami commented 1 year ago

83

Natsusomekeishi commented 1 year ago

介于插件机制问题,无法直接更改ID,只能将QQ替换出去,再重新绑定,如: catsero whitelist change qq QQ号填此处 1

希望处理方案: 增加解绑功能,玩家在QQ群中发送“解绑白名单”,可将QQ和白名单同时移除数据库,可以在配置文件开关解绑功能,默认玩家不可用,服主可用。但是考虑到万一玩家退群想以此清除数据,可以增加将解绑的内容记录在日志中,以便服主落实情况,哪个QQ绑定了哪个ID,解绑就在表格(或日志排版中)显示已于XX时间解绑,新建显示已于XXX新建。

上述日志可以这样排版: 时间 操作者权限组(管理员或玩家) 操作者(QQ或ID) 操作 旧(无则填无) 新 2023.1.27 8:23:22 管理员 Keishi/123456789 更改KeishiID Keishi NKeishi 2023.1.27 8:24:44 玩家 ABC/123452313 解绑ABC白名单 ABC 无 2023.1.27 8:25:31 管理员 Keishi/123456789 添加ABC白名单 无 ABC

可以直接输出txt文本,我建议也可以输出csv文件,同时,如果该内容可以通过特定端口在外网访问就更好了,同时所有功能/内容可以实时于面板修改qwq(我是不是有点异想天开了……如果可能做面板…是不是可以再加上外置/内置验证登录一类功能……qwq)

Muska-Ami commented 1 year ago

下个版本会修复存在空格的问题 由于本插件更加倾向轻量,所以不会制作面板等功能 如需操作数据库可以使用 phpMyAdmin(MySQL),phpLiteAdmin(SQLite) 等工具

Muska-Ami commented 1 year ago

通过正则判定方式修复