云开发文档-安全规则中,支持的安全类型通用地为:read和write,但write可细分为create、update、delete。
但全局变量仅支持doc、auth和now;我的理解是:doc为查询的条件,对于一些简单的查询或写入是有效且方便的,但对于依赖规则来限制一些写入的行为,则有些不足。
如有一记录含有字段dateStr,合法地创建时为2021-09-16,但非法地通过.where({
dateStr: "2021-09-16",
_openid: "{openid}"
})
.update({
data: {
dateStr: "2021-09-15"
}
})
进行篡改的话,当前的安全规则无法限制。
我的设想为:规则表达式增加data(add和update操作的data字段),编写表达式:
update: doc.dateStr == data.dateStr 则可对非法篡改进行限制
最后,还希望安全规则能支持更多内容,如:
1.不能为空的判断支持,如!doc.dateStr,能限制必须传入参数进行查询或写入
2.正则表达式的支持,如/^\d{4}-\d{2}-\d{2}$/.test(dateStr),能限制查询、写入的数据格式