关键漏洞信息 漏洞描述 该提交修复了一个可能的漏洞,涉及到用户数据的访问控制问题。具体来说,通过 接口,可能会返回用户对象的敏感信息(包括通知凭据和其他加载的设置),这些信息只应返回给用户本人或具有 权限的管理员。 修复措施 所有权验证:在获取用户信息时,加入了所有权验证逻辑。只有当请求用户是目标用户本人或具有 权限的管理员时,才会返回完整的用户对象,否则返回一个过滤后的、不包含敏感字段的响应。 字段过滤:在 类中,将敏感字段添加到 数组中,进一步防止敏感信息泄露。新的敏感字段包括: - - - - - - 文件修改 server/entity/User.ts: diff - static readonly filteredFields: string[] = ['email', 'plexId']; + static readonly filteredFields: string[] = [ + 'email', + 'plexId', + 'password', + 'resetPasswordGuid', + 'jellyfinDeviceId', + 'jellyfinAuthToken', + 'plexToken', + 'settings', + ]; server/routes/user/index.ts: diff - const user = await userRepositort.findOneOrFail({ - where: { id: Number(req.params.id) }, - }); - return res.status(200).json(user.filter(req.user?.hasPermission(Permission.MANAGE_USERS))); + const isOwnProfile = req.user?.id === user.id; + const isAdmin = req.user?.hasPermission(Permission.MANAGE_USERS); + return res.status(200).json(user.filter(isOwnProfile