Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
imdatouk
unidocs-zh
提交
5cc8e3c5
U
unidocs-zh
项目概览
imdatouk
/
unidocs-zh
与 Fork 源项目一致
Fork自
DCloud / unidocs-zh
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录