云端一体安全网络 ## 简介 网络安全的问题很多: 1. 客户端受信。因为过去采用无状态网络通过接口交换数据,客户端的真实性很难保证。 2. 网络抓包,即便是https的请求也会被抓包。 当攻击者了解了你的服务器接收什么样的数据时,就可以冒名客户端,提交假数据来攻击你的服务器。 尤其当你的业务中涉及促销、返佣、激励视频等场景,非常容易被刷。褥羊毛已经是一个非常成熟的灰产。 当DCloud同时提供了`uni-app` 和 `uniCloud`时,事实上具备了提供云端一体的安全网络的能力。 在HBuilderX 3.5.5+ ,当开发者同时使用 `uni-app` 和 `uniCloud` 时,可以在网络请求时选择是否通过安全网络运行,它通过高安全的保护机制,防止客户端伪造和通信内容抓包。 注意:安全网络不支持web平台,只支持微信小程序和App。并且App的安全级别更高。 **平台差异说明** |App|微信小程序| |:-:|:-:| |后续支持|3.5.5+| ## 开通流程 ### App平台 后续支持 ### 微信小程序 1. 下载uni-id插件 - `uni-id-co` [详情]() 2. 下载uni-open-bridge插件 在微信小程序上依赖 `access_token`、`session_key`, `encrypt_key`。这些凭据需要`uni-open-bridge`统一接管。 - `uni-open-bridge` [详情]() 3. 在应用的生命周期 `onLaunch` 中检查微信登陆状态,如果过期需要登陆 注意 `uni.checkSession` 有调用次数限制警告,一个 `pv` 可调用 `2` 次 ```js // App.vue ``` ## 调用方式 开通配置后,在uni-app客户端调用uniCloud服务器时,可以通过加入secret参数来声明这次请求走安全网络,对传输数据加密。 - callFunction 客户端通过callFunction调用云函数时,加入secret参数。 ```js uniCloud.callFunction({ name: 'collection', data: { name: 'user' }, secret: 'both' }) ``` - 云对象 客户端通过importObject调用云对象时,加入secret和secretMethods参数。 ```js uniCloud.importObject('object-name', { customUI: false, secretMethods: {'login':'both'} }) ``` **secret 属性说明** |值 |描述 | |:-: |:-: | |none |不加密,默认值 | |request |只加密客户端请求时的上行数据,服务器下发数据不加密 | |response |客户端请求时不加密数据,只加密服务器下发的数据 | |both |客户端和服务器上行下行数据都加密数据 | **secretMethods 属性说明** `secretMethods` 是云对象中指定需要加密的方法名。因为云对象导入后,调用方法时没有额外指定的方式,所以集中在这里配置。如果不配置,则云对象的所有方法请求时都会加密。 ## 小贴士 1. 安全是相对的,没有绝对的安全。 2. 安全是有代价的,加密的数据越庞大,加密和解密的耗时越长。