云函数中缺少输出型方法
例如console.log()使用云函数#
基础示例#
自定义参数示例#
多个自定义参数示例#
使用云函数SQL#
特别注意
您要 特别,非常,必须 注意SQL注入问题,由于SQL语句是由 Js 传入,无法保证是否存在SQL注入(Js无法实现SQL预编译)
SQL被注入案例#
假定你的云函数是这样的,客户端可能通过抓包的方式将cardId 传入改为字符串 '1 or 1 = 1'若服务器执行该语句则您所有的卡密将被全部禁用...应对方案#
虽然Js无法实现预编译,但是我们可以通过一些正则或其他方式校验参数是否合法例如上方的 SQL被注入案例 ,我们就可以将云函数修改为当然此处的应对方案仅是对数字的防御,您需要更多更强大的SQL注入库来检查
使用预置参数示例#
Q:何为预置参数?
A:预置参数即为我们提前给您解析好的参数并且内置于js参数中,效果等同于您传入的cloud_paramsQ:预置参数如何使用?
A:预置参数包括 cardId ,当您想要获取一些信息的时候可以直接使用预置参数,更加安全
例如:若您想要禁用某张卡密,可以结合到上方示例的 云函数SQL ,同时 cardId 通过 预置参数获得,将更加安全,如果 cardId 由客户端传入,可能造成抓包传入错误的 cardId 的风险和安全隐患Q:系统是如何获取预置参数的?
A:系统通过解析云函数接口传入的 token 在token内获取到cardId,这样的方式比使用客户端传入的cardId要更加安全
当前可用的预置参数#
| 参数名 | 参数释义 |
|---|
| cardId | 若您为单码应用则此处为单码的ID |
| userId | 若您为账户密码应用则此处为用户的ID |
传参与预置参冲突#
例如您传入的cloud_params=cardId=1