Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
unidocs-zh
提交
5cc8e3c5
unidocs-zh
项目概览
DCloud
/
unidocs-zh
通知
3172
Star
105
Fork
804
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
93
列表
看板
标记
里程碑
合并请求
67
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
93
Issue
93
列表
看板
标记
里程碑
合并请求
67
合并请求
67
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
5cc8e3c5
编写于
8月 11, 2022
作者:
W
wanganxp
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修改安全网络文档
上级
055f05e2
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
67 addition
and
58 deletion
+67
-58
docs/uniCloud/secret-net.md
docs/uniCloud/secret-net.md
+67
-58
未找到文件。
docs/uniCloud/secret-net.md
浏览文件 @
5cc8e3c5
# uniCloud 加密网络通道
云端一体安全网络
简介
##
简介
为了避免
`uni-app`
和
`uniCloud`
通信时数据被截取和篡改
网络安全的问题很多:
1.
客户端受信。因为过去采用无状态网络通过接口交换数据,客户端的真实性很难保证。
2.
网络抓包,即便是https的请求也会被抓包。
**平台差异说明**
|App|微信小程序|
|:-:|:-:|
|后续支持|3.5.5+|
当攻击者了解了你的服务器接收什么样的数据时,就可以冒名客户端,提交假数据来攻击你的服务器。
尤其当你的业务中涉及促销、返佣、激励视频等场景,非常容易被刷。褥羊毛已经是一个非常成熟的灰产。
## callFunction
```
js
uniCloud
.
callFunction
({
name
:
'
collection
'
,
data
:
{
name
:
'
user
'
},
secret
:
'
both
'
})
```
当DCloud同时提供了
`uni-app`
和
`uniCloud`
时,事实上具备了提供云端一体的安全网络的能力。
在HBuilderX xx+ ,当开发者同时使用
`uni-app`
和
`uniCloud`
时,可以在网络请求时选择是否通过安全网络运行,它通过高安全的保护机制,防止客户端伪造和通信内容抓包。
## 云对象
注意:安全网络不支持web平台,只支持微信小程序和App。并且App的安全级别更高。
```
js
uniCloud
.
importObject
(
'
object-name
'
,
{
customUI
:
false
,
secret
:
'
both
'
,
secretMethods
:
[
'
login
'
]
})
```
`secret`
属性说明
|值 |描述 |
|:-: |:-: |
|none |不加密,默认值 |
|request |客户端请求时加密数据,服务器下发数据时不加密 |
|response |客户端请求时不加密数据,服务器下发数据时加密 |
|both |客户端和服务器同时加密数据 |
`secretMethods`
需要加密的方法名
## 依赖uniCloud模块
**平台差异说明**
-
`uni-id-co`
[
详情
](
)
-
`uni-open-bridge`
[
详情
](
)
|App|微信小程序|
|:-:|:-:|
|后续支持|3.5.5+|
## 开通流程
## App平台
##
#
App平台
后续支持
### 微信小程序
## 微信小程序
1.
下载uni-id插件
在微信小程序上依赖
`access_token`
、
`session_key`
,
`encrypt_key`
-
`uni-id-co`
[
详情
](
)
2.
下载uni-open-bridge插件
### 流程如下
在微信小程序上依赖
`access_token`
、
`session_key`
,
`encrypt_key`
。这些凭据需要
`uni-open-bridge`
统一接管。
1.
使用
`uni-open-bridge`
、
`uni-open-bridge-common`
接管三方开放平台数据,
[
详情
](
/uniCloud/uni-open-bridge
)
-
`uni-open-bridge`
[
详情
](
)
2.
在应用
的生命周期
`onLaunch`
中检查微信登陆状态,如果过期需要登陆
3.
在微信小程序
的生命周期
`onLaunch`
中检查微信登陆状态,如果过期需要登陆
注意
`uni.checkSession`
有调用次数限制警告,一个
`pv`
可调用
`2`
次
...
...
@@ -99,17 +72,53 @@ uniCloud.importObject('object-name', {
<
/script>
```
3.
调用
`uniCloud.callFunction()`
或
`uniCloud.importObject`
客户端内部逻辑如下:
## 调用方式
1.
调用
`uniCloud.getCurrentUserInfo()`
检查本地
`uni-id`
用户登陆状态,登陆无效则调用
`uni.login()`
,继续使用
`uni-id-co`
调用
`loginByWeixin({ code })`
,此过程将同步更新
`uni-open-bridge-common`
保存的数据
`session_key`
2.
调用
`uni.getUserCryptoManager()`
获取加密密钥并通过
`AES`
加密数据,然后发送到
`uniCloud`
服务器
3.
等待服务器响应加密数据到达客户端后解密,回调给开发者
开通配置后,在uni-app客户端调用uniCloud服务器时,可以通过加入secret参数来声明这次请求走安全网络,对传输数据加密。
-
callFunction
## 小贴士
客户端通过callFunction调用云函数时,加入secret参数。
```
js
uniCloud
.
callFunction
({
name
:
'
collection
'
,
data
:
{
name
:
'
user
'
},
secret
:
'
both
'
})
```
安全总是相对的
安全网络是为了防止在设备上安装了受信任证书后
`https`
请求被抓包问题
-
云对象
客户端通过importObject调用云对象时,加入secret和secretMethods参数。
```
js
uniCloud
.
importObject
(
'
object-name
'
,
{
customUI
:
false
,
secret
:
'
both
'
,
secretMethods
:
[
'
login
'
]
})
```
**secret 属性说明**
|值 |描述 |
|:-: |:-: |
|none |不加密,默认值 |
|request |只加密客户端请求时的上行数据,服务器下发数据不加密 |
|response |客户端请求时不加密数据,只加密服务器下发的数据 |
|both |客户端和服务器上行下行数据都加密数据 |
**secretMethods 属性说明**
`secretMethods`
是云对象中指定需要加密的方法名。因为云对象导入后,调用方法时没有额外指定的方式,所以集中在这里配置。如果不配置,则云对象的所有方法请求时都会加密。
## 小贴士
1.
安全是相对的,没有绝对的安全。
2.
安全是有代价的,加密的数据越庞大,加密和解密的耗时越长。
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录