小程序 wx.cloud 操作文档型数据库的漏洞挖掘点
字数 474,阅读大约需 3 分钟
前言
对上一篇文章的补充 原创 | 小程序中云函数越权的探索。
今天来说 cloudbase 中的文档型数据库的权限问题。
文档型数据库权限说明
腾讯云 cloudbase 中位置:

官方文档:https://docs.cloudbase.net/database/data-permission

文档型数据库操作演示
我在写小程序的时候,发现大模型会在云函数和小程序 js 文件里使用
const db = wx.cloud.database();// 先获取总数const countResult = await db.collection('articles').count();const total = countResult.total;// 获取分页数据const result = await db.collection('articles').orderBy('createTime', 'desc').skip((page - 1) * pageSize).limit(pageSize).get();const newArticles = result.data;
云函数和小程序都是调用的 wx cloud 的 sdk。这两种都执行成了。那小程序可以直接db.collection('articles')直接配置查询哪个数据表。这里好像并没有限制不能查看其他数据库哦。
在 console 中调用

const db = wx.cloud.database();let countResult = await db.collection('articles').count();let total = countResult.total;console.log('总条数:', total);
我的云文档数据库里的表有:
-
• articles -
• articles_tag -
• interview_questions -
• interview_tag
如果数据表不存在:

读取 articles_tag
let countResult = await db.collection('articles_tag').count();let total = countResult.total;console.log('总条数:', total);
无权限[ADMINONLY]

提示无权限

读取全部数据,不可修改数据[ADMINWRITE]

读取和修改本人数据[PRIVATE]

小结
可以看到,如果没有配置无权限[ADMINONLY],那么我们能通过 wx.cloud.database 直接对数据库进行查看,如果给了满权限,还能增删改查。
防御
当小程序需要对云文档数据库进行操作时,可以通过云函数进行操作。即时数据库配置无权限[ADMINONLY],云函数依然可以访问,进行完整的增删改查。

也因此,通过云函数操作时,就要考虑上一篇文章对云函数的权限限制。
通过云函数访问时:

小程序直接 db.collection 访问时

夜雨聆风