定时任务是调用云函数。而且该云函数一般是不进行用户验证的。所以任何客户端只要知道该云函数,就可以手动调用该云函数。存在安全问题!!!!能否限制某些云函数客户端不能进行调用,有无这个机制。
是啊,而且云函数默认是Master Key权限吧,我也在想用什么办法能安全地在服务器运行一段代码
但云函数的代码是由你编写的,运行在服务器端环境,所以你是可以控制云函数的代码做什么、不做什么的,如果开启了 masterKey 那么你可能需要做额外的权限检查,只有在确定客户端有对应的权限的时候才执行操作,在云函数中可以通过 req.user 来访问到客户端的用户信息。
比如你可以在云函数里判断 req.user.id == '57885a6cc4c971005ecd8bca',如果为 true 再执行操作,这里的 57885a6cc4c971005ecd8bca 就可以是你的管理员帐号的 ID。
客户端只要是使用我们的 SDK 来调用云函数,就会自动带上当前登录的用户信息的,详见 https://leancloud.cn/docs/leanengine_cloudfunction_guide-node.html#SDK_调用云函数1
请问下,定时任务的req里有没有信息可用判断当前是系统的定时任务调用的呢?user信息好像是空的,没办法校验合法性。
https://leancloud.cn/docs/leanengine_cloudfunction_guide-node.html#hash-1420987692
云函数现在新增了一个 internal 的选项,设置了该选项的话,云函数仅能被定时任务(或使用 Master Key)调用,客户端无法直接调用。