Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
m0_63159449
unidocs-zh
提交
b00c45c8
U
unidocs-zh
项目概览
m0_63159449
/
unidocs-zh
与 Fork 源项目一致
Fork自
DCloud / unidocs-zh
通知
1
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,发现更多精彩内容 >>
提交
b00c45c8
编写于
9月 08, 2022
作者:
DCloud_Heavensoft
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update secret-net.md
上级
6b96bbd6
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
59 addition
and
38 deletion
+59
-38
docs/uniCloud/secret-net.md
docs/uniCloud/secret-net.md
+59
-38
未找到文件。
docs/uniCloud/secret-net.md
浏览文件 @
b00c45c8
云端一体安全网络
**云端一体安全网络**
> HBuilderX 3.6.2+ 支持
## 简介
...
...
@@ -11,9 +13,9 @@
尤其当你的业务中涉及促销、返佣、激励视频等场景,非常容易被刷。褥羊毛已经是一个非常成熟的灰产。
当DCloud同时提供了
`uni-app`
和
`uniCloud`
时,事实上具备了
提供云端一体的安全网络的能力。
DCloud面向开发者同时提供了端引擎
`uni-app`
和 云引擎
`uniCloud`
,其实可以
提供云端一体的安全网络的能力。
在HBuilderX 3.6.2+ ,当开发者同时使用
`uni-app`
和
`uniCloud`
时,可以在网络请求时选择是否通过安全网络运行,
它通过高安全的保护机制,防止客户端伪造和通信内容抓包。
`uni-app`
连接
`uniCloud`
时,可以选择是否启动安全网络。
它通过高安全的保护机制,防止客户端伪造和通信内容抓包。
注意:安全网络不支持web平台,只支持微信小程序和App。并且App的安全级别更高。
...
...
@@ -23,30 +25,38 @@
|:-:|:-:|
|后续支持|3.6.2+|
## 开通流程
## 准备工作
### 微信小程序
### App平台
安全网络在微信小程序上的实现,依赖了微信提供的一些用户级的凭据。所以需要下载
`uni-id`
和
`uni-open-bridge`
,并在app.vue里初始化。
后续支持
1.
工程中导入uni-id
### 微信小程序
-
`uni-id`
[
文档
](
uni-id-summary.md#save-user-token
)
-
`uni-id-co`
[
插件下载地址
](
https://ext.dcloud.net.cn/plugin?id=8577
)
1.
下载uni-id插件
`uni-id-pages`
这个插件是云端一体的登录插件,其实安全网络只需要其中的
`uni-id-co`
云对象。插件中前端登录页面是否使用由开发者自己根据业务决定。
-
`uni-id-co`
[
详情
](
/uniCloud/uni-id-summary.html#save-user-token
)
2.
工程中导入uni-open-bridge插件
2.
下载uni-open-bridge插件
安全网络在微信小程序上依赖了微信的
`access_token`
、
`session_key`
、
`encrypt_key`
等凭据。这些凭据需要
`uni-open-bridge`
统一接管。
在微信小程序上依赖
`access_token`
、
`session_key`
,
`encrypt_key`
。这些凭据需要
`uni-open-bridge`
统一接管。
-
`uni-open-bridge`
[
文档
](
https://uniapp.dcloud.net.cn/uniCloud/uni-open-bridge.html
)
-
`uni-open-bridge`
[
插件下载地址
](
https://ext.dcloud.net.cn/plugin?id=9002
)
-
`uni-open-bridge`
[
详情
](
https://uniapp.dcloud.net.cn/uniCloud/uni-open-bridge.html
)
3.
配置uni-id和uni-open-bridge
3.
在应用的生命周期
`onLaunch`
中检查微信登陆状态,如果过期需要登陆
**缺内容,说清楚从微信小程序后台取哪些凭据,填到哪里?**
如果项目之前已经使用过uni-id和uni-open-bridge,则上述步骤可省略。
4.
在应用的生命周期
`onLaunch`
中检查微信登陆状态,如果过期需要登陆
注意:
[
uni.checkSession
](
https://uniapp.dcloud.net.cn/api/plugins/login.html#uni-checksession
)
有调用次数限制警告,一个
`pv`
可调用
`2`
次
App.vue页面需要补充如下代码:
```
js
// App.vue
<
script
>
function
checkUserSession
()
{
uni
.
checkSession
({
...
...
@@ -72,40 +82,62 @@
<
/script>
```
5.
在manifest中勾选加密模块
**缺内容?**
## 调用方式
开通配置
后,在uni-app客户端调用uniCloud服务器时,可以通过加入secret参数来声明这次请求走安全网络,对传输数据加密。
准备工作完成
后,在uni-app客户端调用uniCloud服务器时,可以通过加入secret参数来声明这次请求走安全网络,对传输数据加密。
-
callFunction
客户端通过callFunction调用云函数时,加入secret参数。
客户端通过callFunction调用云函数时,加入secret
Type
参数。
```
js
uniCloud
.
callFunction
({
name
:
'
collection
'
,
data
:
{
name
:
'
user
'
},
secretType
:
'
both
'
secretType
:
'
both
'
//both指上下行数据都加密,具体见下
})
```
-
云对象
客户端通过importObject调用云对象时,
加入secret和secretMethods参数
。
客户端通过importObject调用云对象时,
通过secretMethods参数来配置每个方法调用时是否加密
。
```
js
uniCloud
.
importObject
(
'
object-name
'
,
{
customUI
:
false
,
secretMethods
:
{
'
login
'
:
'
both
'
}
})
```
**clientDB呢?**
**secretType 属性说明**
|值 |描述 |
|:-: |:-: |
|none |不加密,默认值 |
|request |只加密客户端请求时的上行数据,服务器下发数据不加密 |
|response |客户端请求时不加密数据,只加密服务器下发的数据 |
|both |客户端和服务器上行下行数据都加密数据 |
**secretMethods 属性说明**
`secretMethods`
是云对象中指定需要加密的方法名。可对每个方法配置,例如:
`secretMethods: {'login':'both'}`
,指定
`login`
方法的
`secretType`
为 both
## 服务器端
为了避免客户端伪造参数获取服务器敏感数据,应以服务器端为准,如果客户端携带的
`secretType`
不符合要求应拒绝响应数据
虽然uni-app客户端和uniCloud云端通信是加密的,但对于开发者而言过程是透明的。
-
callFunction
**不管是客户端接收云端数据、还是云端接受客户端数据,开发者的代码拿到的拿到的数据都是加密后的数据。**
但云端有一个注意事项:为了避免客户端伪造
`secretType`
获取服务器敏感数据,应以服务器端为准,如果客户端携带的
`secretType`
不符合要求应拒绝响应数据。示例代码如下
-
云函数中验证secretType
在云函数的context中有secretType。
```
js
exports
.
main
=
async
(
event
,
context
)
=>
{
...
...
@@ -118,7 +150,9 @@ exports.main = async (event, context) => {
}
```
-
云对象
-
云对象中验证secretType
在云对象的this中有secretType。
```
js
module
.
exports
=
{
...
...
@@ -136,24 +170,11 @@ module.exports = {
}
```
## 错误码
**secretType 属性说明**
|值 |描述 |
|:-: |:-: |
|none |不加密,默认值 |
|request |只加密客户端请求时的上行数据,服务器下发数据不加密 |
|response |客户端请求时不加密数据,只加密服务器下发的数据 |
|both |客户端和服务器上行下行数据都加密数据 |
**secretMethods 属性说明**
`secretMethods`
是云对象中指定需要加密的方法名。可对每个方法配置,例如:
`secretMethods: {'login':'both'}`
,指定
`login`
方法的
`secretType`
为 both
**缺内容,客户端错误,服务器解密错误,都应该把错误码列出来?**
## 小贴士
1.
安全是相对的,没有绝对的安全。
2.
安全是有代价的,加密的数据越庞大,加密和解密的耗时越长。
\ No newline at end of file
2.
安全是有代价的,加密的数据越庞大,加密和解密的耗时越长。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录