+
80
-

tcb-js-sdk 腾讯云开发cloudbase浏览器直接访问后端数据库恶意删除问题?

 cloudbase能在浏览器直接访问云端的云函数、数据库、图片等资源,那么他是怎么做到防止别人恶意修改代码删除云端资源的?

tcb-js-sdk 腾讯云开发cloudbase浏览器直接访问后端数据库恶意删除问题?

网友回复

+
0
-

这个可以在云开发后台设置数据库的权限的,

云开发的数据库权限共四种,分别是: 1. 仅创建者可写,所有人可读 2. 仅创建者可读写 3. 仅管理端可写,其他人可读 4. 仅管理端可读写 这四种权限各自对应着不同的场景,接下来,我们借一些例子,来看一看四种权限的不同应用场景。 仅创建者可写,所有人可读 这种权限是我们使用最多的权限,特别是一些涉及到 UGC 的场景,我们一定会需要这个权限,因为我们的需求是产生的内容所有人均可读,写的层面则允许数据的创建者可写。 举个例子,如果你做了一个类似朋友圈的应用,那么你一定希望你的用户发的朋友圈可以被其他用户看到,但不能被其他用户修改,不然就乱套了。 仅创建者可读写 这种权限一般应用在一些用户的个人隐私信息的场景中。这些信息希望用户自己可以读取,但其他用户无法读取,此时,我们便需要仅创建者可读写。 举个例子,如果你做了个人相册的功能,那么你一定希望这个相册是只有你自己能看,而不是被所有人可以看到,因此,你需要选择仅创建者可读写,而不是仅创建者可写,所有人可读。 仅管理端可写,其他人可读 如果描述这个权限的特性,那么就是管理员可以修改,其他人只能看。最适合的场景莫过于各种需要由开发者、平台方管控的东西,比如新闻应用的轮播图列表、商城首页的活动信息等等。这些数据的关键在于所有人都可以看到,同时,所有人也只能看到,不能修改,只能有管理员修改。 举个例子,如果你做了一个电商小程序,那么在你的小程序中,你一定希望首页的推广 Banner 由你自己控制,而不是由用户自行控制,基于这样的考虑,你就需要仅管理端可写,其他人可读的权限。 仅管理端可读写 仅管理端可读写,你可以理解为只有云函数中有资格获取这个数据,其他的环境均不允许。这个权限在某些特定的场景下非常有用,举个例子,你的小程序的一些运行日志,你希望在云端可以查看,同时,这个日志不对普通用户展现,这个时候就可以设置为仅管理端可读写。 举个例子,如果你做了一个电商小程序,那么内部的统计数据就需要设置为仅管理端可读写,这样可以确保你的运营数据不会被普通用户所读取,尽可能避免信息的泄露。 常见问题 为什么没有所有人可读写的权限? 所有人可读写的数据库应用场景并不多见,而且大多数时候、可以通过管理端完成绕过。不过,如果你真的有了这样的场景,不妨思考一下,你的需求到底是什么?是不是因为你的数据库结构的不合理导致的需要所有人可读写? 所有人可读写数据会造成非常多的问题,比如数据原子化、数据锁等问题,因此,在你实现数据所有人可读写时,一定要考虑场景。 能不能实现更加细粒度的权限控制呢? 当然是可以的,实际上,云开发的数据库中每一条由小程序段完成添加的数据都有一个字段 _openid,我们在进行数据库查询时,系统会自动替我们完成这个字段的对比,如果对比不上,再去查询对应集合的权限控制,看是否给予了非创建者可读写的权限。 你自己在实现时,可以在数据创建时,根据业务需求,在数据中加入对应的字段,然后数据查询时,基于字段中的条件进行对比。

具体云开发教程可以参考腾讯云开发文档 https://cloud.tencent.com/document/product/876/51931

+
0
-
<script src="//imgcache.qq.com/qcloud/cloudbase-js-sdk/1.2.1/cloudbase.full.js"></script>
<script type="text/javascript">

    const app = cloudbase.init({
        env: '-env' // 您的环境id
    })

    const db = app.database();
    db.collection("articles").where({
        stat: {
            publishYear: 2018,
            language: "zh-CN"
        }
    });
</script>

我知道答案,我要回答